如何解决Swift 5 和 CloudKit:recordFetchedBlock 在真实设备上不起作用
谢天谢地,我使用 https://medium.com/better-programming/data-persistence-cloudkit-b12e575bd85c 创建了我的第一个使用 CloudKit 的应用程序,只要我不在我的真正的带有 watchOS 7 的 Apple Watch 上运行 watchKit 应用程序,它就可以完美运行。
当要检索存储在 iCloud 中的记录时,recordFetchedBlock 根本不执行。
func getCounterFromCloud() {
print("Starting getCounterFromCloud...")
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Count",predicate: predicate)
query.sortDescriptors = [NSSortDescriptor(key: "modificationDate",ascending: false)]
let operation = CKQueryOperation(query: query)
counterCloudCollector.removeAll()
counterRecordIDs.removeAll()
operation.recordFetchedBlock = { record in
self.counterCloudCollector.append(record["count"]!)
self.counterRecordIDs.append(record.recordID)
print("Operation FetchedBlock is done.")
}
operation.queryCompletionBlock = { cursor,error in
DispatchQueue.main.async {
self.counterCloud = self.counterCloudCollector[0]
print("Should have received from cloud.")
}
}
database.add(operation)
}
我在 iPhone 版本中运行完全相同的代码,这没有问题。由于我使用一个 Apple ID 进行开发,另一个用于我的私人手机,因此我在仪表板中将我的 CloudKit Container 设置为 Production 但因为我认为这可能是我的 Apple ID 的问题,但它没有没有帮助。 (iPhone 版本在我的私人 Apple ID 上运行良好。)
有人知道吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。