在Xamarin.iOS Share Extension中,我想将所选文件(例如pdf,图像,word等)存储在NSUserDefaults中,当主应用程序启动时,我将可以访问其中存储的文件。
这是我的文件类:
public class MyClass {
public string FileName { get; set; }
public byte[] Content { get; set; }
}
因此,在DidSelectPost方法的LoadItem中,我通过使用文件的byte []按对象创建。然后为了将数据保存到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中保存高高度的文件?还有其他方法可以完成相同的工作吗?
您可以使用文件系统在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");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句