CKContainer accountStatusWithCompletionHandler 返回错误值

Posted

技术标签:

【中文标题】CKContainer accountStatusWithCompletionHandler 返回错误值【英文标题】:CKContainer accountStatusWithCompletionHandler returns wrong value 【发布时间】:2015-12-04 15:33:55 【问题描述】:

accountStatusWithCompletionHandler 方法返回.NoAccount 值。知道为什么返回值不是.Available 吗?我已登录 iCloud,并连接到互联网。

文档说.NoAccount 的意思是:

用户的 iCloud 帐户不可用,因为没有帐户 已为此设备提供信息。

我没有收到任何错误。原因可能是应用程序没有使用私有数据库?医生说:

访问私有数据库前调用该方法判断 该数据库是否可用。

【问题讨论】:

accountStatusWithCompletionHandler 这个方法也应该返回错误。能否请您也打印错误。 @OlegGordiichuk 您只会收到“无法确定”结果的错误。 【参考方案1】:

想通了,iCloud Drive 已为该应用程序关闭。

【讨论】:

切换到新手机后遇到了同样的问题。正要问你在哪里启用了 iCloud Drive,因为我找不到它......找到它,所以对于有同样问题的任何人,请转到设置-> icloud。确保 icloud drive 已打开,然后向下滚动以启用它以供任何需要它的应用程序使用。这一定是最近发生了变化,因为我以前从来没有这样做过,并且已经使用 CK 一段时间了。谢谢!【参考方案2】:

此代码示例显示 iCloud 的状态。可能请求许可或促销用户登录.NoAccount 案例。我认为这是您未连接到 iCloude 的情况。

let container = CKContainer.defaultContainer()
    container.accountStatusWithCompletionHandler(status, error in
        switch status 
            case .Available, .Restricted:
            container.requestApplicationPermission(CKApplicationPermissions.PermissionUserDiscoverability,
                completionHandler:  applicationPermissionStatus, error in
                // handle applicationPermissionStatus for statuses like CKApplicationPermissionStatus.Granted, .Denied, .CouldNotComplete, .InitialState
            )
            case .CouldNotDetermine, .NoAccount:
                // Ask user to login to iCloud
        
    )

【讨论】:

我已在设置中连接到 iCloud @János 我将使用我的帐户再次重新测试此代码

以上是关于CKContainer accountStatusWithCompletionHandler 返回错误值的主要内容,如果未能解决你的问题,请参考以下文章

无法从应用程序扩展访问我的“CKContainer”中的任何数据 - CloudKit,Swift

CKContainer requestApplicationPermission 中的服务不可用错误(CKError Code 6)

CKContainer accountStatusWithCompletionHandler 返回错误值

括号内的 SQL Server CASE 子句

发布更新 CKRecord

如何使用CKNotification?