我正在學習使用cloudkit來保存和提取記錄,但我對將緩存保存到coredata感到困惑。
例如,我提取了幾個記錄,並使用tableview顯示了這種記錄類型(比如A,C和F)的一些屬性。當我點擊一個單元格時,它會顯示此記錄的詳細信息(此記錄的所有屬性:A B C D E F,但不包括引用屬性記錄)。 我想知道當我第一次提取記錄時,是否應該將這些東西存儲到coredata中:「A C F和recordID」?當用戶點擊查看詳細信息時,我再次使用recordID獲取?關鍵是我應該使用什麼屬性類型來存儲CKRecordID/CKRecord?
我知道我可以將圖像存儲到本地緩存文件(也令人困惑的..),但它不是一個持久存儲的權利?我之所以不直接存儲記錄的所有屬性是因爲這個記錄是一個「邀請」,只有當用戶選擇接受它時,它纔會下載包括一些引用類型屬性的所有屬性。
任何幫助將有所幫助,謝謝!iOS swift:使用coredata存儲緩存(cloudkit)
1
A
回答
9
你應該只存檔系統字段時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
}
相關問題
- 1. PromiseKit和CloudKit保存(使用Swift)
- 2. 使用coredata存儲/緩存非標準數據類型
- 3. CoreData不存儲Swift 4 Xcode 9
- 4. 在CoreData中存儲NSArray的問題[Swift]
- 5. 使用CloudKit公共存儲來存儲消息 - 安全問題
- 6. 存儲概念iOS - Swift
- 7. 可以使用本地存儲來保存iOS上的緩存
- 8. CoreData不存儲在多個iOS設備
- 9. 如何在Swift中使用CoreData存儲自定義對象?
- 10. iOS - 緩存圖像和管理存儲
- 11. iOS上的存儲和緩存限制
- 12. 將CoreData保存到iCloud(Swift)
- 13. 哪裏使存儲緩存?
- 14. iOS Swift Cloudkit performQuery函數
- 15. Swift 3緩存
- 16. 使用CoreData存儲JSON字符串
- 17. 是否可以緩存視頻? IOS - Swift
- 18. 緩存使用本地存儲
- 19. 使用TYPO3緩存來存儲值
- 20. 使用緩存來存儲位圖
- 21. 如何使用存儲過程緩存?
- 22. CoreData到CloudKit遷移
- 23. 在CoreData中存儲objectID
- 24. 將CMTime存儲在CoreData中?
- 25. 在CoreData中存儲UIColor
- 26. 在iOS中存儲大圖片swift
- 27. iOS Swift 3將值存儲到領域
- 28. Swift默認參數使用緩存值
- 29. 如何使用HanekeSwift Swift刪除緩存?
- 30. NSPredicate找不到CoreData存儲中存在的記錄使用MagicalRecord
,如果我們只是緩存系統文件,如何在設備之間共享數據? Thx – 2016-07-06 08:58:29
如果您想了解更多信息(如果您不想觀看所有內容,可以在分鐘31:10開始),我真的鼓勵您檢查我的答案中鏈接的視頻,但一般來說,'ChangeTag '字段將決定您是否需要將您的本地數據與雲版本同步... – Ben 2016-08-31 23:57:20