首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从CKRecord获得NSPersistentCloudKitContainer的新副本?

如何从CKRecord获得NSPersistentCloudKitContainer的新副本?
EN

Stack Overflow用户
提问于 2020-02-16 02:26:08
回答 1查看 511关注 0票数 0

根据这里的苹果文档

https://developer.apple.com/documentation/coredata/mirroring_a_core_data_store_with_cloudkit/reading_cloudkit_records_for_core_data

您可以使用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。怎么做?

EN

回答 1

Stack Overflow用户

发布于 2020-02-25 14:04:12

使用fetch with RecordID (下面)将使您获得最新的记录:

代码语言:javascript
复制
func fetch(withRecordID recordID: CKRecord.ID, 
completionHandler: @escaping (CKRecord?, Error?) -> Void)

如果您想要获取它,然后更新一个属性并保存,您可以执行如下操作:

从cloudkit获得记录

代码语言:javascript
复制
CKContainer.default().publicCloudDatabase.fetch(withRecordID: user.id!) { updatedRecord, error in

然后为我保存的键和键类型设置新数组(其中,用户数组是我更新的内容,'keyType‘是CK记录字段名)

代码语言:javascript
复制
updatedRecord!.setObject(arrayForUser as __CKRecordObjCValue?, forKey: keyType)

然后进行保存调用,传递更新的记录:

代码语言:javascript
复制
        CKContainer.default().publicCloudDatabase.save(updatedRecord!) { savedRecord, error in
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60244888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档