CKFetchRecordChangesOperation不返回任何记录 [英] CKFetchRecordChangesOperation returns no records
问题描述
CKFetchRecordChangesOperation不返回任何记录。
我用nil来调用它,以最初获取所有记录,但它仅返回服务器令牌。
但是,如果我使用CKQuery可以正确获取所有记录。
CKFetchRecordChangesOperation in the simplified method below does not return any records. I call it with a nil, to initially get all the records, but it only returns the server token. However, if I use CKQuery I get all the records correctly.
我缺少什么?
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的值使用附加的方法调用更新了代码。这是下面的内容。我还检查了该区域。
So, I updated the code with a an additional method call based on the value of moreComing. This below is what's printed. I also checked that the zone is there.
more似乎没有设置来。
moreComing does not seem to be set.
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
。我认为它可能已由 CKFetchDatabaseChangesOperation
和 CKFetchRecordZoneChangesOperation
代替? 2016年WWDC最佳讨论了 CKFetchDatabaseChangesOperation
做法,但这是在共享数据库的上下文中。
Looks like CKFetchRecordChangesOperation
is deprecated. I think it may have been replaced by CKFetchDatabaseChangesOperation
and CKFetchRecordZoneChangesOperation
? CKFetchDatabaseChangesOperation
is discussed in 2016 WWDC Best Practices, but it's in the context of shared databases.
这篇关于CKFetchRecordChangesOperation不返回任何记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!