![](/img/trans.png)
[英]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.