我对 iCloud 的想法有点挣扎,并在这里发布了一个更普遍的问题。我最大的问题是决定是否应该停止将用户的数据放在应用程序沙箱中的旧文档文件夹中。为了说明我的问题:
据我所知,文档没有给出答案。假设我有一个处理不同 txt 文件的应用程序。启动应用程序后,我只需检查云中是否有任何 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;
}
然后我有一种方法可以检查云中是否有任何 txt 文件,如果有,请加载它们。如果没有,我只是在云中创建新的 txt 文件。
这意味着该应用程序不会在文档文件夹中存储任何数据。据我了解,一切都在我设备的本地 iCloud 存储中(如果用户离线,也可以访问)或在云中。所以文本文件存在于两个地方:我的设备和云端。
所以根本不需要在我的本地文档文件夹中存储第三个副本,对吧?还是出于某种我忽略的原因,这是必不可少的?换句话说,如果我向我的用户提供 iCloud,我应该使用本地文档文件夹做什么?(我可以简单地忽略那些不会注册 iCloud 的人吗?)
编辑:为了澄清,当我谈论应用程序沙箱中的标准文档文件夹时,我的意思是这个:
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];