【发布时间】:2015-07-19 16:07:16
【问题描述】:
我正在尝试使用 CloudKit 和光标从我的 iCloud 公共数据库中下载一批记录。无论 resultsLimit 是如何设置的,代码对于前 3 次执行都可以正常工作,但第 4 个完成块永远不会执行。如果未设置 resultsLimit 我得到 300 条记录,如果设置为 50 我得到 150,如果设置为 5 我得到 15...
没有报告错误,并且该块似乎已添加但从未执行。平台是 OS X。这是有问题的代码:
let queryOp = CKQueryOperation(query: query)
queryOp.recordFetchedBlock = self.fetchedDetailRecord
queryOp.resultsLimit = 5
queryOp.queryCompletionBlock = { [weak self]
(cursor: CKQueryCursor!, error: NSError!) -> Void in
println("comp block called with \(cursor) \(error)")
if error != nil {
println("Error on fetch \(error.userInfo)")
} else {
if cursor != nil {
let nextOp = CKQueryOperation(cursor: cursor)
nextOp.recordFetchedBlock = self!.fetchedDetailRecord
nextOp.queryCompletionBlock = queryOp.queryCompletionBlock
nextOp.resultsLimit = 5
self!.publicDatabase?.addOperation(nextOp)
println("added next fetch")
} else {
self!.fileHandle!.closeFile()
self!.exportProgressIndicator.stopAnimation(self)
}
}
}
self.publicDatabase?.addOperation(queryOp)
这是来自控制台的结果 -
459013587628.012 0 459013587628.621 1 459013587628.863 2 459013587629.113 3 459013587629.339 4 用 nil 调用的 comp 块 添加了下一次提取 459013587828.552 5 459013587828.954 6 459013587829.198 7 459013587829.421 8 459013587829.611 9 用 nil 调用的 comp 块 添加了下一次提取 459013587997.084 10 459013587997.479 11 459013587997.74 12 459013587997.98 13 459013587998.207 14
大数字只是调用recordFetchedBlock之间的时间,第二个数字是调用该块的次数。
我很难过...关于如何继续的任何想法?哦,container和publicDatabase都是类变量,在运行上面的sn-p代码之前进行了初始化。
【问题讨论】: