将 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 读回数据时,您可以使用 NSKeyedUnarchiverNSData 转换回原始的 NSAttributedString

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

【讨论】:

以上是关于将 NSAttributedString 添加到 CloudKit的主要内容,如果未能解决你的问题,请参考以下文章

如何将函数调用(不是超链接)添加到 UILabel 中的 NSAttributedString 的一部分?

在 NSAttributedString 中添加图像并保存到 Core Data 性能

将可转换的 NSAttributedString 保存到 Core Data 时出现异常奇怪的崩溃

将目标添加到 UIRefreshControl()

在 iOS 中使用大小类缩放 NSAttributedString

如何从 NSAttributedString 获取图像数据