Я немного борюсь с идеей iCloud и разместил более общий вопрос здесь . Моя самая большая проблема состоит в том, чтобы решить, должен ли я прекратить помещать данные пользователя в папку старых добрых документов, которая находится в песочнице приложения. Чтобы проиллюстрировать мою проблему:
Документы не дают ответа, насколько я вижу. Предположим, у меня есть приложение, которое обрабатывает различные текстовые файлы. Как только я запускаю свое приложение, я просто проверяю, есть ли какие-нибудь txt-файлы в облаке, например:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"AppDelegate: app did finish launching");
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
// (1) iCloud: init
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (ubiq) {
NSLog(@"User has iCloud enabled! Let's get the txt files from the cloud.");
[self loadDocument];
} else {
NSLog(@"User doesn't have iCloud enabled. App is thus worthless.");
}
return YES;
}
У меня есть способ проверить, есть ли в облаке какие-либо текстовые файлы и, если да, загрузить их. Если нет, я просто создаю новые текстовые файлы в облаке.
Это означает, что приложение не хранит никаких данных в папке документов. Насколько я понимаю, все находится либо в локальном хранилище iCloud моего устройства (которое также доступно, если пользователь находится в автономном режиме), либо в облаке. Таким образом, текстовый файл существует в двух местах: на моем устройстве и в облаке.
Так что нет необходимости хранить третью копию в моей локальной папке с документами, верно? Или это важно по какой-то причине, которую я упустил? Другими словами, для чего я должен использовать локальную папку документов, если я предлагаю своим пользователям iCloud? (И могу ли я просто игнорировать тех, кто не подпишется на iCloud?)
РЕДАКТИРОВАТЬ: просто чтобы уточнить, когда я говорю о стандартной папке документов в песочнице приложения, я имею в виду это:
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];