【发布时间】:2016-02-24 14:26:26
【问题描述】:
我正在尝试制作一个应用程序,其中每个用户都有个人头像、昵称等。
我不知道如何访问用户在 cloudkit 上的帐户。
我的解决方案是检索用户的 AppleID,查询 Cloudkit 并修改用户的属性......但我想应该有更好的方法来做到这一点。他们不是类似于 NSUserDefault 而不是 cloudkit 吗?
【问题讨论】:
标签: swift nsuserdefaults cloudkit
我正在尝试制作一个应用程序,其中每个用户都有个人头像、昵称等。
我不知道如何访问用户在 cloudkit 上的帐户。
我的解决方案是检索用户的 AppleID,查询 Cloudkit 并修改用户的属性......但我想应该有更好的方法来做到这一点。他们不是类似于 NSUserDefault 而不是 cloudkit 吗?
【问题讨论】:
标签: swift nsuserdefaults cloudkit
你首先要找出当前登录的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.")
}
【讨论】: