我正在尝试创建一个应用程序,其中每个用户都会有个人头像,昵称等等。
我不知道如何在cloudkit上访问用户的帐户。
我的解决方案是检索用户的AppleID,查询Cloudkit并修改用户的属性......但我想应该有更好的方法来做到这一点。他们的东西不是像NSUserDefault而是cloudkit吗?
答案 0 :(得分:1)
首先必须找出userId中当前的内容。您可以通过对容器执行fetchUserRecordIDWithCompletionHandler方法来实现。然后,您可以通过在该容器上执行discoverUserInfoWithUserRecordID来获取更多(当前只有名和姓)信息。
您可以使用额外的自定义字段扩展Users表,但我不建议这样做。 Users表是一个特殊的系统表,但有一些限制。最好使用用户设置创建单独的recordType。只需将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.")
}