谢天谢地,我使用 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 上运行良好。)
有人知道吗?