3

我有一个非常简单的鞋盒式 iOS 应用程序,带有1个单一的核心数据数据库(作为UIManagedDocument),并考虑尝试添加iCloud支持。


我当然必须检查云中是否已经存在数据库*在启动时创建新的 UIManagedDocument *、保存/打开它等。

因为我已经知道文件名并且有 1 个文档或根本没有文档,所以我真的不知道是否必须这样做

  1. 使用确切文件名的谓词启动NSMetaDataQuery , 然后从结果中获取fileURL(并显式下载它?)如果有,则打开它,或者

  2. 只使用[[NSFileManager defaultManager] fileExistsAtPath:self.iCloudDBURL]iCloudDBURLURLForUbiquityContainerIdentifier + 附加创建?此 URL 是否只是一个本地 URL,并且不会自动检查“真实”云?


我知道使用 UIManagedDocument 可能不是这种应用程序的“正确”方式,但我认为它更容易,我可以尝试..

4

1 回答 1

3

您需要使用该NSMetadataQuery方法。

在 iCloud 上使用 iOS 时,文档不会自动下载——它们只会在您请求时下载。按照您的建议使用NSFileManager只会告诉您该文件是否存在于本地设备上。但是,该文件可能存在于云端,尚未在本地下载。如果您使用NSMetadataQuery,您可以找出文档是否存在于任何地方,即使它在云中并且尚未实际下载。如果文档是在其他设备上创建的,您可以了解它。这也涵盖了用户删除并重新安装应用程序但不删除云数据的情况——即使它没有下载,你也会发现它是否存在。

由于您正在使用UIManagedDocument,您不需要进行特定的下载调用——当您打开它时,它会为您处理。

于 2013-02-06T17:30:26.847 回答