ios - CKFetchRecordChangesOperation 不返回任何记录

标签 ios cocoa swift cloudkit

下面简化方法中的 CKFetchRecordChangesOperation 不返回任何记录。 我用 nil 调用它,最初获取所有记录,但它只返回服务器 token 。 但是,如果我使用 CKQuery,我会正确获取所有记录。

我错过了什么?

 func fetchChangedRecords(token :CKServerChangeToken?) {

    println("\(__FUNCTION__) token: \(token)")

    let zoneID = CKRecordZoneID(zoneName: kMyZone, ownerName: CKOwnerDefaultName)
    var op = CKFetchRecordChangesOperation(recordZoneID: zoneID, previousServerChangeToken: token)

    op.recordChangedBlock = {
        record in
        println("\(__FUNCTION__) record \(record)")
    }

    op.recordWithIDWasDeletedBlock = {
        recordID in
        println("\(__FUNCTION__) record \(recordID)")

    }

    op.fetchRecordChangesCompletionBlock = {
        serverChangeToken, clientChangeToken, error in

        println("\(__FUNCTION__) server token  \(serverChangeToken), clientChangeToken \(clientChangeToken)")

        if let err = error {
            println("\(__FUNCTION__) Error: \(err)")
        }

         if op.moreComing {
            println("\(__FUNCTION__) moreComing")
            self.fetchChangedRecords(serverChangeToken)
        }
    }

    println("\(__FUNCTION__) op \(op)")

    privateDB.addOperation(op)
}

编辑:

因此,我根据 moreComing 的值使用额外的方法调用更新了代码。下面是打印的内容。我还检查了该区域是否存在。

moreComing好像没有设置。

fetchChangedRecords token: nil 
fetchChangedRecords op <CKFetchRecordChangesOperation: 0x16dd3e30; operationID=14A302B7-2718-4E05-97C7-B28EC01ED75B> 
fetchChangedRecords server token  <CKServerChangeToken: 0x16ddfd80; data=AQAAAAAAAAACf/////////+p9bdUdAhLUK36bhza7+4g>, clientChangeToken nil 

只是为了表明该区域在那里。

zone fetching succeeded [<CKRecordZone: 0x16dda330; zoneID=MyZone:__defaultOwner__, capabilities=(Atomic,Sync)>, <CKRecordZone: 0x16d5bb70; zoneID=_defaultZone:__defaultOwner__, capabilities=(none)>]

最佳答案

看起来 CKFetchRecordChangesOperation 已弃用。我认为它可能已被 CKFetchDatabaseChangesOperationCKFetchRecordZoneChangesOperation 取代? CKFetchDatabaseChangesOperation2016 WWDC Best Practices 中讨论, 但它是在共享数据库的上下文中。

关于ios - CKFetchRecordChangesOperation 不返回任何记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140726/

相关文章:

ios - 使用 Parse 用户进行 Firebase 身份验证

ios - UIStackView 里面的 UIScrollView 位置

objective-c - 阻止窗口打开(无窗口应用程序)

SwiftUI:ViewBuilder 无法创建基于数组的 View 集合

swift - 使用 R.Swift 库在 swift 中本地化枚举

ios - 如何在 Swift 中创建一个使用 "self"的全局变量

ios - 非续订订阅是否需要还原按钮?

ios - 如何在 iPhone 中创建像 youtube 应用程序这样的 float 播放器?

objective-c - 第一次打开应用程序?

cocoa - NSTableView 中的自定义单元格