Swift 5 和 CloudKit:recordFetchedBlock 在真实设备上不起作用

时间:2021-01-22 14:52:18

标签: ios swift xcode cloudkit watchos

谢天谢地,我使用 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 上运行良好。)

有人知道吗?

0 个答案:

没有答案