【问题标题】:cloudkit: how to access main user's attributes?cloudkit:如何访问主要用户的属性?
【发布时间】:2016-02-24 14:26:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: swift nsuserdefaults cloudkit


    【解决方案1】:

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

    您可以使用额外的自定义字段来扩展用户表,但我不建议这样做。用户表是一个特殊的系统表,有一些限制。最好使用用户设置创建一个单独的记录类型。只需将 CKReference 添加到 users 表即可轻松访问。

    您还必须注意,在您的应用运行期间,用户可能会注销并使用不同的 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.")
        }
    

    【讨论】:

    • 非常感谢。昨天晚上,我开始为附加属性编写一个新参考(每个用户一个)。我还发现了 fetchUserRecordIDWithCompletionHandler 方法。我仍在努力将 CKRecordID 转换为 CKRecordValue,或者换句话说,在代码中创建引用。但我希望能找到方法。感谢您的回答,因为我没有考虑用户更改 iCloud 帐户的可能性。真的很有帮助
    • 如果您想要示例代码,那么您可以查看developer.apple.com/wwdc/resources/sample-code 的 Apple CloudKit Atlas 演示,或者您可以查看此 CloudKit 代码:github.com/evermeer/EVCloudKitDao
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多