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

时间:2018-07-09 21:18:08

标签: ios objective-c icloud cloudkit

我遇到以下错误。

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构建版本时,它仍然可以正常工作,是的,我指的是权利中的生产conatiner,已将“ com.apple.developer.icloud-container-environment”设置为“生产”。

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

我在开发人员帐户中的应用程序ID下启用了iCloud。

我还为每种记录类型的安全角色设置了用于身份验证的写集。

请有人可以提出问题所在吗? 我一直在研究这个问题,但没有成功。 Here's my database

以下是创建我使用的区域的一些典型代码。

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

-(CKRecordZoneID*)customZone
{
    return [[CKRecordZoneID alloc] initWithZoneName: cCUSTOM_ZONE
                                          ownerName: CKOwnerDefaultName];
}

1 个答案:

答案 0 :(得分:1)

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

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

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