将 NSAttributedString 添加到 CloudKit
Adding NSAttributedString to CloudKit
我需要为 CloudKit 容器添加一些 NSAttributedString
文本设置。
在 CoreData 中,我使用的是属性类型 "Transformable"。当我尝试将 NSAttributedString
添加到 CloudKit 时,我的控制台日志中有一条警告消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Objects of class NSConcreteMutableAttributedString cannot be set on CKRecord'
我可以将 NSAttributedString
转换为 CloudKit 接受的某种类型吗?
如 documentation for CKRecord
所示,您只能存储一组有限的数据类型。鉴于可能的类型,您最好的选择是将 NSAttributedString
转换为 NSData
。这可以使用 NSKeyedArchiver
来完成。然后,当您从 CloudKit 读取数据时,您可以使用 NSKeyedUnarchiver
.
将 NSData
转换回原始 NSAttributedString
请参阅 以获取显示如何在 NSAttributedString
和 NSData
之间来回切换的答案。 (实际上该答案使用 NSMutableAttributedString
)。当然你会 put/get NSData
into/from 一个 CKRecord
而不是 NSUserDefaults
.
我需要为 CloudKit 容器添加一些 NSAttributedString
文本设置。
在 CoreData 中,我使用的是属性类型 "Transformable"。当我尝试将 NSAttributedString
添加到 CloudKit 时,我的控制台日志中有一条警告消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Objects of class NSConcreteMutableAttributedString cannot be set on CKRecord'
我可以将 NSAttributedString
转换为 CloudKit 接受的某种类型吗?
如 documentation for CKRecord
所示,您只能存储一组有限的数据类型。鉴于可能的类型,您最好的选择是将 NSAttributedString
转换为 NSData
。这可以使用 NSKeyedArchiver
来完成。然后,当您从 CloudKit 读取数据时,您可以使用 NSKeyedUnarchiver
.
NSData
转换回原始 NSAttributedString
请参阅 NSAttributedString
和 NSData
之间来回切换的答案。 (实际上该答案使用 NSMutableAttributedString
)。当然你会 put/get NSData
into/from 一个 CKRecord
而不是 NSUserDefaults
.