如何从 cloudkit 下载多条记录

How to download multiple records from cloudkit

我正在尝试从云工具包下载多个项目,但出现错误 "cannot assign type value (CKQueryCursor!, NSError) -> () to type (CKQueryCursor?, NSError?) -> void"

let locationToLookFor = CLLocation() 
let predicate = NSPredicate(format: "location = %@", locationToLookFor as CLLocation)
let query = CKQuery(recordType: "Location", predicate: predicate)
let operation = CKQueryOperation(query: query)
operation.recordFetchedBlock = self.recordFetchBlock
operation.queryCompletionBlock =
{
    [weak self]
    (cursor: CKQueryCursor!, error: NSError) in
    if(cursor != nil)
    {
        print("Fetching records")
        let newOperation = CKQueryOperation(cursor: cursor)
        operation.recordFetchedBlock = recordFetchBlock
        operation.queryCompletionBlock = operation.queryCompletionBlock
        self!.operationQueue.addOperation(newOperation)
    }
    else {
        print("We have fetched all data")
    }
}
operationQueue.addOperation(operation)

您的关闭签名与要求的签名不匹配。如错误消息所示,cursorerror 一样应该是可选的。你也会得到一个错误,因为当你将它提供给新操作时你没有打开 cursor

尝试:

operation.queryCompletionBlock =
{
    [weak self]
    (cursor: CKQueryCursor?, error: NSError?) -> Void in
    if let cursor = cursor
    {
        print("Fetching records")
        let newOperation = CKQueryOperation(cursor: cursor)
        operation.recordFetchedBlock = recordFetchBlock
        operation.queryCompletionBlock = operation.queryCompletionBlock
        self?.operationQueue.addOperation(newOperation)
    }
    else {
        print("We have fetched all data")
    }
}