【问题标题】:Check if UI(Managed)Document is already in iCloud via URLForUbiquityContainerIdentifier+Path instead of NSMetadataQuery?通过 URLForUbiquityContainerIdentifier+Path 而不是 NSMetadataQuery 检查 UI(Managed)Document 是否已经在 iCloud 中?
【发布时间】:2013-01-18 16:23:16
【问题描述】:

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


我当然必须检查是否已经有一个现有数据库在云中 *在创建新的 UIManagedDocument 之前启动*、保存/打开等

由于我已经知道文件名,并且要么只有 1 个文档,要么根本没有文档,所以我真的不知道是否必须这样做

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

  2. 只需使用[[NSFileManager defaultManager] fileExistsAtPath:self.iCloudDBURL] iCloudDBURLURLForUbiquityContainerIdentifier 创建 + 附加?这个网址只是本地的,不会自动检查“真实”的云吗?


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

【问题讨论】:

    标签: ios cocoa-touch core-data icloud uimanageddocument


    【解决方案1】:

    您需要使用NSMetadataQuery 方法。

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

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

    【讨论】:

      猜你喜欢
      • 2014-02-27
      • 2012-07-07
      • 1970-01-01
      • 2023-03-20
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多