如何解决从 iCloud 下载文件的正确方法
我一直在尝试在我的应用中实现 iCloud 备份功能。一些 Stack Overflow 的回答和其他网站表示以下方法可行。但是,以下代码有时不起作用。下载进度要么固定为 0%,要么显示为 100%,但文件仍然是过时的本地副本。
func download(itemUrl: URL) {
// Remove the local copy of the item
try? FileManager.default.evictUbiquitousItem(at: itemUrl)
// Request iCloud to start downloading the item
try? FileManager.default.startDownloadingUbiquitousItem(at: itemUrl)
// Watch for item status change
// Create Metadata query to observe:
// 1. The path of the file item
// 2. The download progress of the file item
let MetadataQuery = NSMetadataQuery()
MetadataQuery.searchScopes = [NSMetadataQueryUbiquitousDataScope,NSMetadataQueryUbiquitousDocumentsScope]
MetadataQuery.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [
nspredicate(format: "%K == %@",NSMetadataItemPathKey,itemUrl.path),nspredicate(format: "%K >= 0",NSMetadataUbiquitousItemPercentDownloadedKey)
])
// Called when the query result is updated
NotificationCenter.default.addobserver(forName: .NSMetadataQueryDidUpdate,object: MetadataQuery,queue: nil,using: { notification in
self.updateDownloadProgress(notification)
})
// Called when the query is finished
NotificationCenter.default.addobserver(forName: .NSMetadataQueryDidFinishGathering,using: { notification in
self.updateDownloadProgress(notification)
})
// Start the query
MetadataQuery.start()
}
和 updateDownloadProgress
函数:
func updateDownloadProgress(_ notification: Notification) {
// Get download progress (%),// Stop the query when the progress reaches 100%
}
省略了错误处理。我假设 iCloud 中每分钟或每小时有一个请求限制,这阻止了此方法始终按我的意图工作。我应该做哪些改变才能使这项工作 100% 有效?任何帮助将不胜感激。
更新:这个问题是否与我没有使用 NSFileCoordinator
的事实有关?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。