存储iCloud容器URL

时间:2013-02-21 22:05:12

标签: icloud nsfilemanager

我可以存储从以下位置返回的NSURL:

[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]

在NSUserDefaults(或plist)中,以便在我的应用启动时更快地访问iCloud容器?

目前,上述代码可能需要几秒钟(有时10秒钟)才能返回容器路径。当我的应用程序等待返回时,这会导致从iCloud加载用户数据时出现明显且恼人的延迟。

我假设每次启动应用时NSURL路径都完全相同,因此可以将其存储起来以便以后快速访问。

我已经在我自己的设备上尝试了这个并且它工作正常,我只是想知道在'wild'中是否可能有任何问题。

TA

1 个答案:

答案 0 :(得分:2)

可能会工作。但它并没有解决问题,它只是移动它。该方法就像它一样阻止,因为内部它正在为您的应用程序启动并运行iCloud(可能涉及网络调用)。这种情况迟早会发生,因为它是您应用的iCloud设置过程的一部分。你可能会避免这个电话,但你会在其他地方遇到延迟。

唯一的主要问题是,当您的应用未运行时,用户可能会退出iCloud,或者更糟糕的是,退出iCloud并登录到其他iCloud帐户。如果您保存此网址,请确保同时保存ubiquityIdentityToken的值(您可以在不阻止的情况下查找),并检查其值是否已在应用启动时更改。同时收听NSUbiquityIdentityDidChangeNotification,如果已发布,请再次查找网址并保存新值。