【发布时间】:2016-03-15 13:13:52
【问题描述】:
我在将时间保存到 CloudKit 时发生了 oplock 错误。我似乎无法找出原因,但我怀疑当我从 CloudKit 仪表板手动编辑 CKRecords 然后从应用程序中获取和修改该记录时会发生这种情况。有没有人解释一下 oplock 的含义以及我应该从哪里开始寻找?
这是错误
Error Error saving record <CKRecordID: 0x79c42d60; 418deec9-ee5e-46b8-8877-606c14a5fe92:(_defaultZone:__defaultOwner__)> to server: client oplock error updating record
这是我的代码,注意即使我不更改记录也会出现错误
[self.publicDB saveRecord:self.currentUser completionHandler:^(CKRecord *record, NSError *error)
{
if(error)
{
NSLog(@"Error %@", error.localizedDescription);
}
else
{
NSLog(@"Saved access to Cloudkit");
}
}];
【问题讨论】:
-
您能否向我们展示您的代码出错的地方以及您得到的错误的确切输出?
-
好的,谢谢 - 更新了代码和错误
-
oplock 错误通常意味着您无权更新数据。您确定您的记录来自同一个公共数据库吗?记录是否由其他人创建,您是否设置了只能更新自己数据的安全设置?
-
是的,它是默认容器,公共数据库,大多数时候代码都可以工作,我只是偶尔会收到这个错误(我怀疑记录被锁定了,可能有一段时间,当你编辑它在仪表板中)。
-
您是否收到 ChangeTokenExpired 错误?您可以使用以下方法获取错误代码: let errorCode:CKErrorCode = CKErrorCode(rawValue: error!.code)! developer.apple.com/library/prerelease/ios/documentation/…