CloudKit fetchUserRecordIDWithCompletionHandler完成代码没有调用?

时间:2015-07-08 19:59:38

标签: ios swift icloud cloudkit completionhandler

我正在尝试使用fetchUserRecordIDWithCompletionHandler从CloudKit获取当前用户ID,但是当我运行代码时,将跳过完成处理程序。

let container = CKContainer.defaultContainer()
let publicDatabase = container.publicCloudDatabase

var userID: CKRecordID!

container.fetchUserRecordIDWithCompletionHandler( { recordID, error in
    if error == nil {
        userID = recordID

    } else {
        NSLog("\(error.localizedDescription)")
    }
})


let predicate = NSPredicate(format: "personID = \(userID)")

let query = CKQuery(recordType: "Person", predicate: predicate)

因此,userID的值保持nil,因此查询会抛出异常

1 个答案:

答案 0 :(得分:2)

完成处理程序仅在获取请求完成后才会运行,这将异步发生。因此,您无法在调用后立即使用获取请求的结果。将该查询移动到代码的其他部分的完成处理程序中,该处理程序可以从处理程序中调用或以其他方式触发。