簡體   English   中英

如何將由可轉換的 CoreData 屬性創建的 CKRecord 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 ,以及使用NSSecureUnarchiveFromDataTransformertransformable類型的屬性names和相應的屬性@NSManaged var names: Set<String>?

為了在 iCloud 記錄更改時收到通知,該應用程序使用查詢訂閱。
下發通知時,發送改變后的object的標識符,獲取NSManagedObjectobjectID ,使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM