【问题标题】:CloudKit, Failed to modify some records - Zone Not FoundCloudKit,无法修改某些记录 - 未找到区域
【发布时间】: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];
}

【问题讨论】:

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

标签: ios objective-c icloud cloudkit


【解决方案1】:

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

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

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

【讨论】:

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