iOS swift:使用coredata(cloudkit)存储缓存

Ozz*_*hen 2 core-data ios swift cloudkit

我正在学习使用cloudkit来保存和获取记录,但我对将缓存保存到coredata感到困惑.

例如,我使用tableview获取了几条记录并显示了这种记录类型的一些属性(比如A,C和F).当我单击一个单元格时,它将显示此记录的详细信息(此记录的所有属性:ABCDEF,但不包括引用属性记录).当我第一次拿到记录时,我想知道是否应将这些东西存入coredata:"ACF和recordID"?当用户点击查看详细信息时,我使用recordID再次获取?关键是我应该使用什么属性类型来存储CKRecordID/CKRecord?

我知道我可以将像image这样的东西存储到本地缓存文件中(也令人困惑..),但它不是持久存储吗?而且我没有直接存储记录的所有属性的原因是因为这个记录是一个"邀请",只有当用户选择接受它时,它才会下载所有属性,包括一些引用类型属性.

任何帮助都会有所帮助,谢谢!

Ben*_*Ben 10

您应该在缓存时仅存档系统字段,如下所示:

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
}
Run Code Online (Sandbox Code Playgroud)

31:10 WWDC 2015 - Session 715 - iOS,OS X. 在此输入图像描述