2016-07-31 67 views
0

我想從雲套件下載多個項目,但我得到的錯誤「無法指定類型值(CKQueryCursor!,NSError) - >()鍵入(CKQueryCursor ?, NSError? ) - > void「如何從cloudkit下載多個記錄

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) 
+1

你關閉有一個隱含展開''cursor''CKQueryCursor,但它應該是可選的''CKQueryCursor我 – Paulw11

+0

的變化@ Paulw11後得到同樣的錯誤!? – Steve

回答

1

您的結案簽名與所需簽名不匹配。如錯誤消息所示,cursor應該是可選的,應該是error。你也會得到一個錯誤,因爲當你將它提供給新的操作時你不打開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") 
    } 
}