如何更新云套件数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更新云套件数据相关的知识,希望对你有一定的参考价值。
我有2种记录类型云套件数据库:
- 人名单
- 房间清单
占据了房间的人总是在变化。我有存储在引用的一个房间的人记录类型CKRecord
.Reference。然而,这需要参考不断变化,因为人占据了房间不断变化。
我一直在挣扎,而无需创建一个新的记录更新基准。
我试图拉CKRecord
出CkRecords
的阵列为人民,创建一个新的参考房间,我想那个人占据并保存此参考回到个人记录,然后保存这个用CKModifyRecordsOperation
对象。
然而,这似乎是建立在我的数据库一个新的记录,而不是更新当前之一。
if providerAssignedRoom == nil
self.roomAssignmentDelegate?.assignRoom(roomID: self.selectedRoomCKRecID, provider: provider, completion: self.transitionBackToRoot)
else
let newProvider = self.searchCKRecArrayForProviderRef(providerRecID, self.providersCKRecsArray)
let reference = CKRecord.Reference(recordID:
self.selectedRoomCKRecID, action: .none)
newProvider[RecordTypes.providerEnum.assignedRoom] = reference
let operation = CKModifyRecordsOperation(recordsToSave: [record, newProvider], recordIDsToDelete: nil)
operation.completionBlock =
print("record reference assigned to nil")
LaborFloorNamesDB.share.publicDatabase.add(operation)
答案
该解决方案是简单地增加一个保存政策。我正在这复杂得多,它需要是。
let providerToBeAssigned = self.providersArray[indexPath.item]
let providerToBeAssignedCKRef = self.findProviderCKRecordBasedOnProviderObject(provider: providerToBeAssigned)
var roomToBeReferenced: CKRecord
let object = self.roomsAsCKRecsArray.filter $0.recordID == self.selectedRoomCKRecID
let value = object.first
return value!
if self.providerToBeRemoved != nil
self.providerToBeRemoved![RecordTypes.providerEnum.assignedRoom] = nil
providerToBeAssignedCKRef![RecordTypes.providerEnum.assignedRoom] = CKRecord.Reference(record: roomToBeReferenced, action: .none)
let operation = CKModifyRecordsOperation(recordsToSave: [providerToBeAssignedCKRef!, self.providerToBeRemoved!], recordIDsToDelete: nil)
operation.savePolicy = .changedKeys
operation.completionBlock =
print("record reference updated to cloud")
LaborFloorNamesDB.share.publicDatabase.add(operation)
以上是关于如何更新云套件数据的主要内容,如果未能解决你的问题,请参考以下文章