大佬教程收集整理的这篇文章主要介绍了ios – Cloudkit:“提供的ZoneId与目标区域不匹配”,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
func saveProfileForcheck(check: check) { let toSave = CKRecord(recordType: "check",zonEID: sharedStore.checksID!) let profile = check.profile as Profile! toSave.SETVALue(NSString(format: "%i",check.closed),forKey: "closed") toSave.SETVALue(check.date,forKey: "date") toSave.SETVALue(NSString(format: "%i",check.paid),forKey: "paid") toSave.SETVALue(CKReference(recordID: profile.dbRecordID,action: CKReferenceAction.deleteSelf),forKey: "profile") let operation = CkmodifyRecordsOperation(recordsToSave: [toSave],recordIDsTodelete: [check.id]) operation.modifyRecordsCompletionBlock = { (savedRecords,deletedRecordIDs,error) in if error != nil { self.delegate?.cloudKitReturnedError(error!) } else { self.modifiedcheck(check,newRecord: savedRecords![0] as CKRecord ) } } privateDB.addoperation(operation) }
它应该在我的checks RecordZone中的check对象上保存配置文件属性.当我触发此功能时,我收到此错误:
<CKError 0x7f8c2046d630: "Partial Failure" (2/1011); "Failed to modify some records"; uuid = EF4CCE3F-3CDB-4506-BA43-464D7D9BD0F6; container ID = "mycontainer"; partial errors: { 130BD962-295C-4601-9343-2E4F4014C8C7:(checks:__defaultowner__) = <CKError 0x7f8c2045c680: "Invalid Arguments" (12/2006); server message = "ZonEID provided doesn't match target zone"> ... 1 "Batch request Failed" CKError's omited ...
}>
我尝试了几件事:
>检查zonEID是否实际正确.
>将zonEID硬编码为方法中的CKRecordZonEID对象.
>查看谷歌和SO上的错误,这没有结果.
请注意,sharedstore.checksID是一个实际的ID而不是字符串,它是在获取所有记录区域时在应用程序启动时创建的.
@H_801_2@
operation.zonEID = CKRecordZonEID(zonename: sharedStore.checksID!,ownerName: "your name")
更新:如下所述,.zonEID仅适用于CKQqueryOperation,而不适用于CkmodifyRecordsOperation
我相信只能将CKReference设置为同一区域中的记录.是这样的吗?如果没有,那么你可以尝试保存没有该引用的记录吗?
从文档:
更新:如果引用的源和目标位于默认区域中,则可以跨数据库(公共和私有)添加引用.
@H_801_2@ @H_801_2@以上是大佬教程为你收集整理的ios – Cloudkit:“提供的ZoneId与目标区域不匹配”全部内容,希望文章能够帮你解决ios – Cloudkit:“提供的ZoneId与目标区域不匹配”所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。