iOS swift:使用coredata存储缓存(cloudkit)
问题描述:
我正在学习使用cloudkit来保存和提取记录,但我对将缓存保存到coredata感到困惑。
例如,我提取了几个记录,并使用tableview显示了这种记录类型(比如A,C和F)的一些属性。当我点击一个单元格时,它会显示此记录的详细信息(此记录的所有属性:A B C D E F,但不包括引用属性记录)。 我想知道当我第一次提取记录时,是否应该将这些东西存储到coredata中:“A C F和recordID”?当用户点击查看详细信息时,我再次使用recordID获取?关键是我应该使用什么属性类型来存储CKRecordID/CKRecord?
我知道我可以将图像存储到本地缓存文件(也令人困惑的..),但它不是一个持久存储的权利?我之所以不直接存储记录的所有属性是因为这个记录是一个“邀请”,只有当用户选择接受它时,它才会下载包括一些引用类型属性的所有属性。
任何帮助将有所帮助,谢谢!iOS swift:使用coredata存储缓存(cloudkit)
答
你应该只存档系统字段时cacheing,像这样:
private func dataFromRecord(record:CKRecord) -> NSData{
let archivedData = NSMutableData()
let archiver = NSKeyedArchiver(forWritingWithMutableData: archivedData)
archiver.requiresSecureCoding = true
record.encodeSystemFieldsWithCoder(archiver)
archiver.finishEncoding()
return archivedData
}
private func recordFromData(archivedData:NSData) -> CKRecord?{
let unarchiver = NSKeyedUnarchiver(forReadingWithData: archivedData)
unarchiver.requiresSecureCoding = true
let unarchivedRecord = CKRecord(coder: unarchiver)
return unarchivedRecord
}
,如果我们只是缓存系统文件,如何在设备之间共享数据? Thx – 2016-07-06 08:58:29
如果您想了解更多信息(如果您不想观看所有内容,可以在分钟31:10开始),我真的鼓励您检查我的答案中链接的视频,但一般来说,'ChangeTag '字段将决定您是否需要将您的本地数据与云版本同步... – Ben 2016-08-31 23:57:20