0

我正在尝试使用 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,因此查询会因此而引发异常

4

1 回答 1

3

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

于 2015-07-08T20:12:03.243 回答