我需要为CloudKit容器添加一些NSAttributedString
文本设置。
在CoreData中,我使用了Atribute类型" Transformable"。当我尝试将NSAttributedString
添加到CloudKit时,我的控制台日志中有一条警告消息:
***由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:'类NSConcreteMutableAttributedString的对象无法在CKRecord上设置'
我可以将NSAttributedString
转换为CloudKit接受的某种类型吗?
答案 0 :(得分:2)
如documentation for CKRecord
所示,您只能存储一组有限的数据类型。鉴于可能的类型,您最好的选择是将NSAttributedString
转换为NSData
。这可以使用NSKeyedArchiver
来完成。然后,当您从CloudKit读取数据时,可以使用NSData
将NSAttributedString
转换回原始NSKeyedUnarchiver
。
请参阅https://stackoverflow.com/a/36940864/1226963以获取有关如何在NSAttributedString
和NSData
之间来回切换的答案。 (实际上答案使用NSMutableAttributedString
)。当然,您可以将NSData
放入/放入CKRecord
而不是NSUserDefaults
。