Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS swift:使用coredata(cloudkit)存储缓存_Ios_Swift_Core Data_Cloudkit - Fatal编程技术网

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

iOS swift:使用coredata(cloudkit)存储缓存,ios,swift,core-data,cloudkit,Ios,Swift,Core Data,Cloudkit,我正在学习使用cloudkit保存和获取记录,但我对将缓存保存到coredata感到困惑 例如,我获取了一些记录,并使用tableview显示了这种记录类型的一些属性(例如,a、C和F)。当我单击一个单元格时,它将显示该记录的详细信息(该记录的所有属性:abcdef,但不包括引用属性记录)。 当我第一次获取记录时,我想知道是否应该将这些东西存储到coredata中:“一个cf和一个recordID”?当用户单击查看详细信息时,我使用recordID再次获取?关键是我应该使用什么属性类型来存储CK

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

例如,我获取了一些记录,并使用tableview显示了这种记录类型的一些属性(例如,a、C和F)。当我单击一个单元格时,它将显示该记录的详细信息(该记录的所有属性:abcdef,但不包括引用属性记录)。 当我第一次获取记录时,我想知道是否应该将这些东西存储到coredata中:“一个cf和一个recordID”?当用户单击查看详细信息时,我使用recordID再次获取?关键是我应该使用什么属性类型来存储CKRecordID/CKRecord?

我知道我可以将图像之类的东西存储到本地缓存文件中(也很混乱),但它不是一个持久存储,对吗?我之所以不直接存储记录的所有属性,是因为该记录是一个“邀请”,只有当用户选择接受它时,它才会下载包括一些引用类型属性在内的所有属性。


任何帮助都会有帮助的,谢谢

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

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
}
31:10

如果我们只是缓存系统文件,那么设备之间如何共享数据?如果您想了解更多信息,ThxI确实鼓励您查看我答案中链接的视频a(如果您不想全部观看,您可以在31:10开始观看),但一般来说,“ChangeTag”字段将确定您是否需要将本地数据与云版本同步。。。