CloudKit-更新记录:使用“saveRecord”更新记录时出现“客户端 oplock 错误”
Posted
技术标签:
【中文标题】CloudKit-更新记录:使用“saveRecord”更新记录时出现“客户端 oplock 错误”【英文标题】:CloudKit- update record: "client oplock error" when updating record using "saveRecord" 【发布时间】:2016-02-06 11:32:12 【问题描述】:我正在尝试将 CKRecord 更新为公共数据库。启动和下载效果很好。
func upDatePublicRecord()
let database:CKDatabase = CKContainer.defaultContainer().publicCloudDatabase
if let myID = self.ID
database.fetchRecordWithID(myID, completionHandler: (myRecord, error) in
if error != nil
print("Error fetching record: \(error!.localizedDescription)")
else
print("publicrecord fetched")
myRecord!["name"] = self.name
//and more code to change other properties
//save back to iCloud
CKContainer.defaultContainer().privateCloudDatabase.saveRecord(myRecord!) [unowned self] (record, error) -> Void in
dispatch_async(dispatch_get_main_queue())
if error == nil
print("update success")
else
print("Error in update public: \(error!.localizedDescription)")
)
这适用于在 privateCloudDatabase 中更新,对于公共数据库我收到此错误:
更新公共错误:保存记录时出错CKRecordID:0x7f855dbcdb70; F3C192C8-6E81-493E-9E1A-75C5F3826F78:(_defaultZone:defaultOwner) 到服务器:客户端 oplock 错误更新记录
这是什么意思?我应该怎么做才能更新公共记录?
【问题讨论】:
【参考方案1】:您遇到了复制和粘贴问题。您正在从公共数据库中获取,但您正在尝试保存到私有数据库。
改变这个:
CKContainer.defaultContainer().privateCloudDatabase.saveRecord(myRecord!) [unowned self] (record, error) -> Void in
到:
CKContainer.defaultContainer().publicCloudDatabase.saveRecord(myRecord!) [unowned self] (record, error) -> Void in
【讨论】:
以上是关于CloudKit-更新记录:使用“saveRecord”更新记录时出现“客户端 oplock 错误”的主要内容,如果未能解决你的问题,请参考以下文章