将NSAttributedString添加到CloudKit

时间:2016-04-29 23:18:05

标签: swift nsattributedstring cloudkit nsmutableattributedstring

我需要为CloudKit容器添加一些NSAttributedString文本设置。

在CoreData中,我使用了Atribute类型" Transformable"。当我尝试将NSAttributedString添加到CloudKit时,我的控制台日志中有一条警告消息:

  

***由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:'类NSConcreteMutableAttributedString的对象无法在CKRecord上设置'

我可以将NSAttributedString转换为CloudKit接受的某种类型吗?

1 个答案:

答案 0 :(得分:2)

documentation for CKRecord所示,您只能存储一组有限的数据类型。鉴于可能的类型,您最好的选择是将NSAttributedString转换为NSData。这可以使用NSKeyedArchiver来完成。然后,当您从CloudKit读取数据时,可以使用NSDataNSAttributedString转换回原始NSKeyedUnarchiver

请参阅https://stackoverflow.com/a/36940864/1226963以获取有关如何在NSAttributedStringNSData之间来回切换的答案。 (实际上答案使用NSMutableAttributedString)。当然,您可以将NSData放入/放入CKRecord而不是NSUserDefaults