Я немного борюсь с идеей iCloud и разместил более общий вопрос здесь . Моя самая большая проблема - решить, следует ли мне перестать помещать данные пользователя в старую добрую папку документов, которая находится в песочнице приложения. Чтобы проиллюстрировать мою проблему:
Документы не дают ответа, насколько я могу судить. Предположим, у меня есть приложение, которое обрабатывает разные текстовые файлы. Как только я запускаю свое приложение, я просто проверяю, есть ли какие-либо текстовые файлы в облаке, вот так:
- (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];