Cloudkit:FetchUserRecordIdWithCompletionHandler 返回以前的用户 ID

Posted

技术标签:

【中文标题】Cloudkit:FetchUserRecordIdWithCompletionHandler 返回以前的用户 ID【英文标题】:Cloudkit : FetchUserRecordIdWithCompletionHandler returns previous user id 【发布时间】:2015-09-19 15:44:30 【问题描述】:

当我注销我的 Icloud 帐户并使用另一个帐户登录并返回我的应用程序时,我遇到了 fetchUserRecordIdWithCompletionHandler 的问题。我再次获取用户记录 ID 以更新数据,然后它从退出的用户那里获取以前的 ID,而不是新用户的 ID。我认为 cloudkit 正在缓存用户 ID,并且当用户注销并使用另一个 ID 登录时它不会更新它。

但是,当应用程序终止并再次打开时,它会识别新 ID。

任何人都知道如何解决这个问题,或者这是一个错误。

提前致谢

【问题讨论】:

您是否实施了以下操作来捕获登录更改?它被称为? NSNotificationCenter.defaultCenter().addObserverForName(NSUbiquityIdentityDidChangeNotification, object: nil, queue: nil) _ in 是的,我做到了,它在更改发生时被调用,但是当我尝试获取新的 id 时,它一直返回旧的... 【参考方案1】:

我刚刚对此进行了测试,它至少在 ios 9.2 中已修复,但可能更早。当我发现时,我会更新这篇文章。

- (void)applicationDidBecomeActive:(UIApplication *)application 
    [[CKContainer defaultContainer] fetchUserRecordIDWithCompletionHandler:^(CKRecordID * _Nullable recordID, NSError * _Nullable error) 
        if(error)
            NSLog(@"error fetching user record");
            return;
        
        NSLog(@"user %@", recordID);
    ];

【讨论】:

【参考方案2】:

我也遇到了同样的问题,更新 XCode 到 7.1 后解决了!

【讨论】:

以上是关于Cloudkit:FetchUserRecordIdWithCompletionHandler 返回以前的用户 ID的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit 批量获取?

CloudKit 的单元测试

cloudKit:公共数据库中的 CKFetchRecordChangesOperation

无法初始化 CloudKit 架构,因为协调器中没有存储配置为使用 CloudKit

Cloudkit 与组合

Swift 2 和 Cloudkit 的通知