【发布时间】:2020-05-25 02:42:49
【问题描述】:
我有一个 NSAttributedString,其中包含文本和图像以及与之关联的属性。我正在尝试将 NSAttributedString 转换为 RTFD,以便它可以上传到 Cloud Firestore,然后可以从 RTFD 转换回 NSAttributedString。
我目前正在使用这些扩展从 NSAttributedString 转换为 RTFD 并返回,但它们返回 nil。
extension NSAttributedString {
var attributedString2rtfd: String? {
do {
let rtfdData = try self.data(from: NSRange(location: 0, length: self.length), documentAttributes:[.documentType: NSAttributedString.DocumentType.rtfd])
return String.init(data: rtfdData, encoding: String.Encoding.utf8)
} catch {
print("error:", error)
return nil
}
}
}
extension String {
var rtfd2AttributedString: NSAttributedString? {
do {
guard let data = data(using: String.Encoding.utf8) else {
return nil
}
return try NSAttributedString(data: data,
options: [.documentType: NSAttributedString.DocumentType.rtfd,
.characterEncoding: String.Encoding.utf8.rawValue],
documentAttributes: nil)
} catch {
print("error: ", error)
return nil
}
}
}
当我将所有“rtfd”替换为“rtf”并且属性字符串中只有文本时,这些扩展名有效。但是,当我在属性字符串中包含图像并使用带有“rtfd”的扩展名时,如上所示,它们都返回 nil。我在这里做错了什么?
【问题讨论】: