将 NSAttributedString 添加到 CloudKit
Posted
技术标签:
【中文标题】将 NSAttributedString 添加到 CloudKit【英文标题】:Adding NSAttributedString to CloudKit 【发布时间】:2016-04-29 23:18:04 【问题描述】:我需要为 CloudKit 容器添加一些 NSAttributedString
文本设置。
在 CoreData 中,我使用的是属性类型“Transformable”。当我尝试将 NSAttributedString
添加到 CloudKit 时,我的控制台日志中有一条警告消息:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“不能在 CKRecord 上设置 NSConcreteMutableAttributedString 类的对象”
我可以将我的NSAttributedString
转换为 CloudKit 接受的某种类型吗?
【问题讨论】:
【参考方案1】:如documentation for CKRecord
中所见,您只能存储一组有限的数据类型。鉴于可能的类型,您最好的选择是将NSAttributedString
转换为NSData
。这可以使用NSKeyedArchiver
来完成。然后,当您从 CloudKit 读回数据时,您可以使用 NSKeyedUnarchiver
将 NSData
转换回原始的 NSAttributedString
。
请参阅https://***.com/a/36940864/1226963 以获得显示如何在NSAttributedString
和NSData
之间来回切换的答案。 (实际上该答案使用NSMutableAttributedString
)。当然,您可以将NSData
放入/取出CKRecord
而不是NSUserDefaults
。
【讨论】:
以上是关于将 NSAttributedString 添加到 CloudKit的主要内容,如果未能解决你的问题,请参考以下文章
如何将函数调用(不是超链接)添加到 UILabel 中的 NSAttributedString 的一部分?
在 NSAttributedString 中添加图像并保存到 Core Data 性能
将可转换的 NSAttributedString 保存到 Core Data 时出现异常奇怪的崩溃