1

我正在尝试使用以下代码从 CloudKit 获取当前用户的名字:

func getUserFirstName() -> String{

    var firstNameFromFunction: String?
    var currentuserID : CKRecordID? 



    container.fetchUserRecordID(completionHandler: {
        userID, error in
        if ((error == nil)) {
            self.currentuserID = userID!

        }
    })

    container.discoverUserInfo(withUserRecordID: currentuserID!, completionHandler: {userInfo, error in

       let firstNameFromFunction = (userInfo!.displayContact?.givenName)!
    })
    return firstNameFromFunction!
}

但是在执行时,currentUserID 为 nil,并创建了致命错误。有谁知道为什么 currentUserID 为零?

4

2 回答 2

0

您的应用必须成功地为userDiscoverability请求ApplicationPermission,然后才能获取UserRecordID

于 2017-07-13T06:08:30.880 回答
0

测试值是否为 nil 的代码如下所示。桑的回答也许是对的;我猜如果用户没有在您运行它的设备上登录他的appleID,它也可能是零。

if self.currentuserID = userID {
// do something with self.currentuserID (the unwrapped value of userID)
} else {
// do something now that we know userID is nil
}
于 2017-07-14T06:01:34.150 回答