根据这里的苹果文档
您可以使用CKRecord从NSManagedObject获得NSPersistentCloudKitContainer。
Access CloudKit对象您可以使用单个记录的记录( for:)或多条记录的记录( for:)直接通过其关联的上下文访问托管对象的CKRecord。若要仅检索记录ID,请使用recordID(for:)或记录ID(for:)。或者,在recordID上使用类函数记录(for:)、记录(for:)、NSPersistentCloudKitContainer (for:)和记录on (for:)。
但它没说怎么弄到新的副本?如果您正在使用CloudKit共享,则无需通过CoreData就可以修改CK。在这种情况下,您必须等待NSPersistentCloudKitContainer下一次获取更新。
但是,如果要显示最新的共享状态,则需要查询Cloudkit。怎么做?
发布于 2020-02-25 14:04:12
使用fetch with RecordID (下面)将使您获得最新的记录:
func fetch(withRecordID recordID: CKRecord.ID,
completionHandler: @escaping (CKRecord?, Error?) -> Void)如果您想要获取它,然后更新一个属性并保存,您可以执行如下操作:
从cloudkit获得记录
CKContainer.default().publicCloudDatabase.fetch(withRecordID: user.id!) { updatedRecord, error in然后为我保存的键和键类型设置新数组(其中,用户数组是我更新的内容,'keyType‘是CK记录字段名)
updatedRecord!.setObject(arrayForUser as __CKRecordObjCValue?, forKey: keyType)然后进行保存调用,传递更新的记录:
CKContainer.default().publicCloudDatabase.save(updatedRecord!) { savedRecord, error inhttps://stackoverflow.com/questions/60244888
复制相似问题