[英]CoreData transformable type - can I store NSString or NSData?
[英]How to decode a CKRecord NSData field, created by a transformable CoreData attribute, back to its original type?
設置:
我的應用程序使用 CoreData 和 CloudKit 同步。
實體Item
具有Int16
類型的屬性status
以及相應的屬性@NSManaged var status: Int16
,以及使用NSSecureUnarchiveFromDataTransformer
可transformable
類型的屬性names
和相應的屬性@NSManaged var names: Set<String>?
為了在 iCloud 記錄更改時收到通知,該應用程序使用查詢訂閱。
下發通知時,發送改變后的object的標識符,獲取NSManagedObject
的objectID
,使用persistentContainer: NSPersistentCloudKitContainer的persistentContainer.record(for: objectID)
獲取對應的ckRecord: CKRecord
persistentContainer: NSPersistentCloudKitContainer
獲取實際的屬性值.
問題:
“正常”字段值,例如status
,可以使用ckRecord["CD_status"] as! Int16
ckRecord["CD_status"] as! Int16
。 我也可以得到ckRecord["CD_names"] as! NSData
ckRecord["CD_names"] as! NSData
,但我不知道如何將其轉換回Set<String>?
.
屬性的類型僅限於 CoreData 中的某些類型, Set<String>
不是一個,這就是為什么您需要一個轉換器,它將其轉換為(NS)Data
。
因此,您可以使用該轉換器將其轉換回transformedValue(_:)
:
NSSecureUnarchiveFromDataTransformer().transformedValue(ckRecord["CD_names"])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.