CloudKit fetchUserRecordIDWithCompletionHandler 完成代码未调用?
Posted
技术标签:
【中文标题】CloudKit fetchUserRecordIDWithCompletionHandler 完成代码未调用?【英文标题】:CloudKit fetchUserRecordIDWithCompletionHandler completion code not calling? 【发布时间】:2015-07-08 19:59:38 【问题描述】:我正在尝试使用 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】:完成处理程序只会在获取请求完成后运行,这将异步发生。因此,您不能在调用后立即使用 fetch 请求的结果。将该查询移动到代码的其他部分的完成处理程序中,这些部分可以从处理程序调用或以其他方式触发。
【讨论】:
以上是关于CloudKit fetchUserRecordIDWithCompletionHandler 完成代码未调用?的主要内容,如果未能解决你的问题,请参考以下文章
cloudKit:公共数据库中的 CKFetchRecordChangesOperation