CloudKit fetchUserRecordIDWithCompletionHandler 完成代码未调用?
CloudKit fetchUserRecordIDWithCompletionHandler completion code not calling?
我正在尝试使用 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
,因此查询会因此抛出 异常。
完成处理程序只会 运行 一旦提取请求完成,这将异步发生。所以你不能在调用后立即使用获取请求的结果。将该查询移动到代码的其他部分的完成处理程序中,这些代码可以从处理程序调用或以其他方式触发。
我正在尝试使用 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
,因此查询会因此抛出 异常。
完成处理程序只会 运行 一旦提取请求完成,这将异步发生。所以你不能在调用后立即使用获取请求的结果。将该查询移动到代码的其他部分的完成处理程序中,这些代码可以从处理程序调用或以其他方式触发。