Поддержка iCloud в приложении для Mac OS X Lion - PullRequest
4 голосов
/ 16 января 2012

В Mac OS X (10.7 Lion) Приложение без документов , я хочу включить поддержку iCloud, чтобы я мог обмениваться данными между другими экземплярами того же приложения на других компьютерах (не на устройствах iOS)).Немного изучив документацию Apple, я обнаружил, что должен использовать хранилище списка значений ключей в iCloud, поскольку документ, который я хочу загрузить, содержит только массив пользовательских объектов (которые имеют простые свойства, такие как имя (строка)., дата (дата объекта), ...).Этот файл - единственное, что я хочу загрузить в iCloud.В приложении я уже реализовал сохранение файла на диск, используя NSFileManager s - (void)writeData:(NSData*)data toPath:(NSString *)path (или что бы то ни было, я забыл).Он загружается из файла, используя NSFileManager снова (используя - (NSData *)dataInFileAtPath:(NSString*)path или что-то еще).Файл хранится в подкаталоге, в каталоге поддержки пользователей.Он сохраняется каждый раз, когда в массив добавляется новый элемент или изменяется элемент в массиве.

Мне было интересно, может ли кто-нибудь предоставить ссылку на учебник или указать мне правильное направление, чтобызаписать этот файл в iCloud, а затем снова загрузить его на других экземплярах того же приложения?Все учебники и документация, которые я нашел, были только для iOS.Любая помощь будет принята с благодарностью!

Заранее спасибо!

Бен

1 Ответ

3 голосов
/ 13 февраля 2012

Просто используйте NSUbiquitousKeyValueStore , что очень похоже на NSUserDefaults за исключением того, что оно записано в iCloud.Вы должны прочитать раздел iCloud Storage в руководстве по программированию приложений для Mac, но вам нужно просто включить разрешения на вкладке «Сводка» цели приложения в XCode, а затем сделать что-то вроде:

NSData *dataToStore = [NSKeyedArchiver dataWithRootObject:yourArray];
[[NSUbiquitousKeyValueStore defaultStore] setData:dataToStore forKey:@"yourKey"]; 

Затем, чтобы получить ваши данные, просто выполните

NSData *retrievedData = [[NSUbiquitousKeyValueStore defaultStore] dataForKey:@"yourKey"];
NSArray *retrievedArray = [NSKeyedUnarchiver unarchiveObjectWithData:retrievedData];

Единственное предостережение: для работы с массивом пользовательских объектов все эти объекты должны реализовывать Протокол NSCoding .Это просто вопрос реализации двух методов;Вот хороший учебник .

PS Вы используете одни и те же API, независимо от того, разрабатываете ли вы для OS X или iOS, поэтому нет никаких причин, почему вы не могли просто следовать руководству по iOS для iCloudхранение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...