cloudkit: 如何获取主用户的属性?

cloudkit: how to access main user's attributes?

我正在尝试制作一个应用程序,其中每个用户都会有个人头像、昵称等。

我不知道如何访问 cloudkit 上的用户帐户。

我的解决方案是检索用户的 AppleID,查询 Cloudkit 并修改用户的属性...但我想应该有更好的方法来做到这一点。他们不是类似于 NSUserDefault 而是 cloudkit?

你首先要知道当前登录的userId是多少。您可以通过在容器上执行 fetchUserRecordIDWithCompletionHandler 方法来做到这一点。然后,您可以通过在该容器上执行 discoverUserInfoWithUserRecordID 来获取更多(目前只有名字和姓氏)信息。

您可以使用额外的自定义字段扩展用户 table,但我不建议这样做。用户 table 是一个特殊的系统 table,有一些限制。最好用用户设置创建一个单独的 recordType。只需为用户添加一个 CKReference table 以方便访问。

您还必须注意,用户可能会在您的应用程序运行期间注销并使用不同的 iCloud 帐户登录。您可以通过在应用程序启动后立即执行下面的代码来捕获它。当然,您必须在看到 NSLog

的地方实现自己的逻辑
    var ubiquityIdentityDidChangeNotificationToken = NSNotificationCenter.defaultCenter().addObserverForName(NSUbiquityIdentityDidChangeNotification, object: nil, queue: nil) { _ in
        NSLog("The user’s iCloud login changed: should refresh all user data.")
    }