在 iOS 共享扩展 (Xamarin) 中向 NSUserDefaults 添加一个 Class 和 byte[]
Add a Class with byte[] to NSUserDefaults in iOS Share Extension (Xamarin)
在 Xamarin.iOS 共享扩展 中,我想将我选择的文件(如 pdf、图像、word 等)存储在我的 中NSUserDefaults 并且当主应用程序启动时,我将可以访问其中存储的文件。
这是我的文件 class :
public class MyClass {
public string FileName { get; set; }
public byte[] Content { get; set; }
}
所以在 LoadItem 中的 DidSelectPost 方法中,我使用 byte[][=45= 按对象创建] 的文件。然后为了在 NSUserDefaults 中保存数据,我将我的对象转换为 JSON 像这样(通过使用 Newtonsoft.Json 图书馆):
string jsonString = JsonConvert.SerializeObject(myFileObject);
然后我将它设置为 NSUserDefaults 对象,如下所示:
NSUser.SetValueForKey(new NSString(myFileObject), new NSString("FileSharing" + count));
或
NSUser.SetValueForKey(new NSString(myFileObject), new NSString("FileSharing"+ count));
然后我将同步我的项目:NSUser.Synchronize());
一切顺利,但是当主应用程序打开时,新数据不在这里。
string toDesralize = nSUser.StringForKey("FileSharing0");
我试过很多文件,我发现这个问题只适用于低高度的文件,它不适用于像 14mb 这样的文件。如何在 NSUserDefaults 中保存高文件?还有其他方法可以做同样的工作吗?
您可以使用file system在Xamarin.iOS中存储和读取数据:
var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine(documents, "Write.txt");
//save text
File.WriteAllText(filename, "Write this text into a file");
//save bytes
File.WriteAllBytes(filename,yourBytes);
以及读取方法:
var text = File.ReadAllText("TestData/ReadMe.txt");
Console.WriteLine(text);
var bytes = File.ReadAllBytes("path");
在 Xamarin.iOS 共享扩展 中,我想将我选择的文件(如 pdf、图像、word 等)存储在我的 中NSUserDefaults 并且当主应用程序启动时,我将可以访问其中存储的文件。
这是我的文件 class :
public class MyClass {
public string FileName { get; set; }
public byte[] Content { get; set; }
}
所以在 LoadItem 中的 DidSelectPost 方法中,我使用 byte[][=45= 按对象创建] 的文件。然后为了在 NSUserDefaults 中保存数据,我将我的对象转换为 JSON 像这样(通过使用 Newtonsoft.Json 图书馆):
string jsonString = JsonConvert.SerializeObject(myFileObject);
然后我将它设置为 NSUserDefaults 对象,如下所示:
NSUser.SetValueForKey(new NSString(myFileObject), new NSString("FileSharing" + count));
或
NSUser.SetValueForKey(new NSString(myFileObject), new NSString("FileSharing"+ count));
然后我将同步我的项目:NSUser.Synchronize());
一切顺利,但是当主应用程序打开时,新数据不在这里。
string toDesralize = nSUser.StringForKey("FileSharing0");
我试过很多文件,我发现这个问题只适用于低高度的文件,它不适用于像 14mb 这样的文件。如何在 NSUserDefaults 中保存高文件?还有其他方法可以做同样的工作吗?
您可以使用file system在Xamarin.iOS中存储和读取数据:
var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine(documents, "Write.txt");
//save text
File.WriteAllText(filename, "Write this text into a file");
//save bytes
File.WriteAllBytes(filename,yourBytes);
以及读取方法:
var text = File.ReadAllText("TestData/ReadMe.txt");
Console.WriteLine(text);
var bytes = File.ReadAllBytes("path");