CloudKit,无法修改某些记录 - 未找到区域

Posted

技术标签:

【中文标题】CloudKit,无法修改某些记录 - 未找到区域【英文标题】:CloudKit, Failed to modify some records - Zone Not Found 【发布时间】:2018-07-09 21:18:08 【问题描述】:

我收到以下错误。

ERROR[CKErrorDomain:2] Failed to modify some records, 
<CKError 0x1c005e1e0: "Partial Failure" (1011); "Failed to modify some records"; 
partial errors: 
BB27A0F8-0D8A-4279-A4E6-515B4E6C5116:(MainCustomZone:__defaultOwner__) = 
<CKError 0x1c0050740: "Zone Not Found" (26/2036); server message = "Zone 'MainCustomZone' 
does not exist"; uuid = E4AE311D-A73F-4F8A-BAF7-1EF5082D2FA9>
>

我的应用在我的开发设备上运行良好,但在我的 beta 用户的 testflight 中,他们得到了上述错误。当我使用 testflight 构建时,它对我来说仍然可以正常工作,是的,我在我的权利中指向生产容器,我已将 'com.apple.developer.icloud-container-environment' 设置为 'production.

我已经三重检查了我正在查看的容器是否正确,并且区域名称的拼写是否正确。

我在我的开发者帐户中的应用 ID 下启用了 iCloud。

我还为每个记录类型设置了安全角色以进行身份​​验证。

请有人提出问题是什么? 我一直在研究这个问题,但没有成功。

这里有一些典型的代码来创建我使用的区域。

CKFetchRecordChangesOperation *changesOperation = [[CKFetchRecordChangesOperation alloc]
                                                   initWithRecordZoneID: [self customZone]
                         previousServerChangeToken: previousServerChangeToken];

-(CKRecordZoneID*)customZone

    return [[CKRecordZoneID alloc] initWithZoneName: cCUSTOM_ZONE
                                          ownerName: CKOwnerDefaultName];

【问题讨论】:

"这里有一些典型的代码来创建我使用的区域。"无论您处于开发阶段还是生产阶段,您都很少在代码中创建新区域。通常,您访问的是现有的。 【参考方案1】:

数据库中只有一个区域 - 默认区域。如果您的应用正在使用任何其他区域,则您的应用必须先创建该区域,然后再尝试访问(或写入)该区域中的任何记录。

您可能在某个时候创建​​了开发区,这就是代码在那里工作的原因。

屏幕截图显示您的私人数据库。每个用户都有自己的私有数据库,您无法在仪表板中看到其他用户的私有数据库。您需要通过应用程序中的代码创建区域。

【讨论】:

我也有该区域在生产中,请参阅上面的编辑。谢谢。 但这仅适用于您的私有数据库。每个用户都有自己的私有数据库,您无法在仪表板中看到其他用户的私有数据库。您需要通过应用程序中的代码创建区域。 据我了解,我只需要使用“initWithRecordZoneID”和“initWithZoneName”,我也在上面添加了它。 ??再次感谢。 不,您必须先创建区域。看CKModifyRecordZonesOperation。您发布的代码用于从现有区域查询更改。

以上是关于CloudKit,无法修改某些记录 - 未找到区域的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit修改了用户过滤的记录?

记录、区域不显示在仪表板和删除区域问题 CloudKit

Swift cloudkit CKFetchRecordZoneChangesOptions 无法返回删除记录

清除/清除 CloudKit 容器的所有用户 iCloud 记录

CloudKit CKRecordZone

记录未保存 Cloudkit