Добавьте класс с байтом [] к NSUserDefaults в iOS Расширение общего доступа (Xamarin) - PullRequest
1 голос
/ 18 февраля 2020

В Xamarin. iOS Расширение общего доступа . Я хочу сохранить выбранные файлы (например, pdf, изображения, word et c.) В моих NSUserDefaults и когда основное приложение запустится, я получу доступ к файлам, хранящимся в нем.

Вот мой класс файлов:

public class MyClass {    
    public string FileName { get; set; }
    public byte[] Content { get; set; } 
}

Так что в LoadItem в DidSelectPost я создаю объект с помощью байт [] файлов. Затем для сохранения данных в NSUserDefaults я конвертирую свой объект в JSON следующим образом (используя Newtonsoft. Json library ):

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");

Я пробовал много файлов, и Я обнаружил, что эта проблема работает только для файлов с небольшой высотой и не работает для файлов, таких как 14 МБ. Как я могу сохранить файлы с большой высотой в NSUserDefaults ? Есть ли другой способ сделать ту же работу?

1 Ответ

3 голосов
/ 19 февраля 2020

Вы можете использовать файловую систему для хранения и чтения данных в 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...