Сохранить пользовательскую структуру в iCloud UIDocument

я также много искал здесь, на SO, но я не нашел способа начать то, что я хочу, в своем приложении я хочу сохранить какой-то пользовательский объект в iCloud, я думаю, что лучший способ - использовать UIDocument, это пользовательский объект :

@interface AppState : NSObject

@property (nonatomic, strong) NSNumber *timestamp;
@property (nonatomic, strong) NSNumber *type;
@property (nonatomic, strong) NSString *note;
@property (nonatomic, strong) NSString *device;

@end

тогда я не знаю как, я хочу сохранить эту информацию в iCloud и получить ее на другом устройстве, я знаю, что должен создать подкласс класса UIDocument, но я не могу понять, как я храню эту информацию, я должен вставить это в массиве? или что-то другое? любая помощь будет оценена, потому что я нашел много руководств о том, как хранить nsstring, но у меня есть настраиваемый объект, и я также хочу знать, если возможно, как эта информация хранится в iCloud, один файл для каждого настраиваемого объекта или все вставить в один файл?


person Piero    schedule 07.10.2013    source источник


Ответы (1)


Прежде всего, вы должны поместить его в файл (или файлы). Затем вам нужно будет написать метод для чтения и записи в файл (или файлы). Таким образом, большое решение заключается в том, какой формат файла: вы можете просто открыть простой файл и записать данные с использованием разделителей, или вы можете открыть 4 файла и записать каждый элемент данных в отдельный файл. Вы также можете проявить фантазию и сохранить их как сериализованные данные с помощью кодировщиков или даже сохранить их в базе данных SQLite. Или вы можете продемонстрировать свои способности программирования и сохранить их в основных данных, хотя решения SQLite и CoreData кажутся излишними для того, что у вас есть в настоящее время. Пока вы записываете файл в каталог, который является общим для iCloud, он будет храниться в iCloud. Вы можете убедиться, что бит «не сохранять этот файл в iCloud» не установлен, но я думаю, что он установлен для его сохранения при создании.

То, как вы храните свои данные, часто зависит от того, как вы хотите их использовать. В этом случае с такими небольшими объемами данных я бы просто записал их в файл и использовал разделители.

person Owen Hartnett    schedule 07.10.2013
comment
но если я сохраню его в файле, используя разделители, о которых вы говорите, напишите NSString, верно? я думаю, что это не лучший выбор, потому что мне нужно получить эту информацию на другом устройстве, чтобы увидеть изменение состояния, и мне нужно проанализировать весь файл, чтобы получить информацию, предпочитаю что-то чистое, вы говорите о хранении, использующем сериализованные данные с использованием кодировщиков , или хранить в sqlite, я предпочитаю одну из этих реализаций, но что вы считаете лучшим? как вы храните базу данных sqlite в облаке? вряд ли он испортится? и можете ли вы привести пример сериализованных данных с использованием кодировщиков? - person Piero; 07.10.2013
comment
дайте мне пример того, как вы храните, например, пять таких пользовательских объектов в icloud... - person Piero; 07.10.2013
comment
Я не вижу причин, по которым вы хотели бы хранить четыре небольших фрагмента данных в чем-либо, кроме простого файла. Если вы не хотите анализировать, сохраните каждый фрагмент данных в отдельном файле для 4 файлов. Затем вы можете проверить даты модификации, чтобы увидеть, что изменилось. Все остальное - это программирование ради программирования, если вы не указали никаких причин, по которым данные должны храниться в противном случае. - person Owen Hartnett; 07.10.2013