在CloudKit中获取当前用户ID?
问题描述:
如何获取用户的当前UserId?我正在使用下面的代码:在CloudKit中获取当前用户ID?
CKContainer.default().requestApplicationPermission(.userDiscoverability) { (status, error) in
CKContainer.default().fetchUserRecordID { (record, error) in
if #available(iOS 10.0, *) {
CKContainer.default().discoverUserIdentity(withUserRecordID: record!, completionHandler: { (userID, error) in
self.currentuserID = userID?.userRecordID
print("user record id")
print(userID)
})
} else {
// Fallback on earlier versions
}
}
但是在最后currentUserID被设置为nill?有谁知道如何成功获得许可并获得当前用户ID?
答
在提取用户信息之前,您应该检查status
的值。它可能是这样的...
CKContainer.default().requestApplicationPermission(.userDiscoverability) { (status, error) in
switch status
{
case .granted:
print("iCloud is OK")
case .initialState:
print("The user has not yet decided whether to grant this permission")
return
case .couldNotComplete:
print("An error occurred during the getting or setting of the app permission")
if let error = error
{
print("err @ \(#function) -> \(error.localizedDescription)")
}
return
case .denied:
print("The user denied access to the permission.")
return
}
CKContainer.default().fetchUserRecordID { (record, error) in
if #available(iOS 10.0, *)
{
CKContainer.default().discoverUserIdentity(withUserRecordID: record!, completionHandler: { (userID, error) in
self.currentuserID = userID?.userRecordID
print("user record id")
print(userID)
})
}
else
{
// Fallback on earlier versions
}
}
你在后续的获取和发现调用之前检查了错误吗?你在哪里运行这段代码?您是否在设备上登录了iCloud? – agibson007