iCloud上传进度和密钥

时间:2012-06-05 12:06:54

标签: ios icloud

我正在尝试从我的某个应用程序将文件推送到iCloud,但有时无法跟踪文件是否已经在iCloud上。在将文件标记为无处不在之后,我有一种方法可以通过NSMetadataQuery定期检查文件的状态。当我得到结果时,我使用这些键来获取文件的状态:

NSNumber *isUploaded = [file valueForAttribute:NSMetadataUbiquitousItemIsUploadedKey];
NSNumber *isUploading = [file valueForAttribute:NSMetadataUbiquitousItemIsUploadingKey];
NSNumber *uploadPercent = [file valueForAttribute:NSMetadataUbiquitousItemPercentUploadedKey];

这似乎有时会起作用,但在其他时候,isUploaded值为0,isUploading值也为0! uploadPercent值实际上始终为0.当我进入设备的“设置”应用程序并检查我的应用程序的文件时,文件已经列在那里,所以我不确定为什么'NSMetadataUbiquitousItemIsUploadedKey'键会返回0?< / p>

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:5)

我正在尝试做同样的事情。根据iCloud指南,尝试NSURLUbiquitousItemIsUploadedKey而不是NSMetadataUbiquitousItemIsUploadedKey。如果这对您有用,请告诉我。我仍然无法让这个工作。以下是指南中的部分:

确定文件或目录的传输状态

您写入iCloud容器目录的项目会尽快自动传输到iCloud服务器。但是,根据网络和设备类型,文件可能无法立即上载到服务器或下载到设备。如果您需要知道文件的状态,可以使用getResourceValue:forKey:error: NSURL方法检索以下属性之一的值:

  • NSURLIsUbiquitousItemKey - 表示项目是否存储在iCloud中。

  • NSURLUbiquitousItemIsDownloadedKey - 表示该项目的当前版本是否已下载且可访问。

  • {{1 - 表示当前版本的项目是否正在下载但尚未可用。

  • NSURLUbiquitousItemIsDownloadingKey - 对于正在下载的项目,指示的百分比更改已下载。您可以使用此值更新进度条。

  • NSURLUbiquitousItemPercentDownloadedKey - 表示本地更改已成功上载到iCloud服务器。

  • NSURLUbiquitousItemIsUploadedKey - 表示当前正在将本地更改上传到iCloud服务器。

  • NSURLUbiquitousItemIsUploadingKey - 对于某个项目正在上传,表示已经上传到服务器的更改百分比。

  • 虽然iCloud服务器积极地提取您的应用在本地进行的更改,但iOS设备通常不会从服务器提取更改直到您尝试访问该文件。如果您尝试打开当前正在下载的文件,iOS将阻止发出打开请求的线程,直到文件下载并可供使用。因此,如果您担心潜在的延迟,请根据需要检查文件的当前状态,并可能更新您的用户界面以反映该文件尚未可用或当前正在下载。

    有关属性的更多信息您可以请求网址,请参阅 NSURL类参考