在CloudKit中获取当前用户ID?

时间:2017-07-14 13:39:15

标签: cloudkit

如何获取用户的当前UserId?我使用以下代码:

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?

2 个答案:

答案 0 :(得分:2)

据我所知,您不需要requestApplicationPermission的许可来获取CloudKit用户的唯一ID。你可以这样做......

CKContainer.default().fetchUserRecordID() { recordID, error in
  //...
}

没有问过这个......

CKContainer.default().requestApplicationPermission(.userDiscoverability){ status, error in
  //...
}

.userDiscoverability只是其他应用用户可以通过电子邮件或电话号码找到您唯一的用户记录。

我希望有所帮助。 :)

答案 1 :(得分:0)

在获取用户信息之前,您应该检查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
        }
    }