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,无法修改某些记录 - 未找到区域的主要内容,如果未能解决你的问题,请参考以下文章
Swift cloudkit CKFetchRecordZoneChangesOptions 无法返回删除记录