Синхронизация файла .plist с iCloud - PullRequest
4 голосов
/ 25 декабря 2011

Я пытаюсь выяснить, как синхронизировать файл .plist, который находится в папке «Поддержка приложений» в моем приложении для песочницы для Mac.Я знаю, что мог бы использовать хранилище значений ключей iCloud, но существует ограничение в 64 КБ на приложение, которое может быть или не быть получено в зависимости от того, сколько вещей пользователь добавляет в приложение!большая часть документации Apple, насколько это возможно, но я все еще в замешательстве: (

Кто-нибудь делает что-то подобное?

Спасибо

1 Ответ

3 голосов
/ 26 декабря 2011

Вы должны создать подкласс UIDocument и использовать его с каталогами ubiquity.

Существует 2 метода, отвечающих за обработку чтения / записи.Этот вызывается при чтении:

- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError

А этот при записи:

- (id)contentsForType:(NSString *)typeName error:(NSError **)outError

Все действия открытия / сохранения вызываются автоматически, вам не нужно ничего делать.Однако существуют методы, которые заставляют открывать / сохранять.Вызывайте это при открытии:

- (void)openWithCompletionHandler:(void (^)(BOOL success))completionHandler

/* --- EXAMPLE --- */

MyDocument *doc = [[MyDocument alloc] initWithFileURL:ubiquitousFileURL];
[doc openWithCompletionHandler:^(BOOL success) {
    if (success) {
        // do sth
    } else {
        // handle error
    }
}];

... и это при сохранении:

- (void)saveToURL:(NSURL *)url forSaveOperation:(UIDocumentSaveOperation)saveOperation completionHandler:(void (^)(BOOL success))completionHandler

/* --- EXAMPLE --- */

MyDocument *doc = [[MyDocument alloc] initWithFileURL:ubiquitousPackage];

[doc saveToURL:[doc fileURL] forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
    if (success) {
        // do sth
    } else {
        // handle error
    }
}];

В Интернете много учебников, вот несколько примеров, которые я использовал дляобучение:

Справочник по классам UIDocument также может помочь.

...