В чем проблема?
В настоящее время я создаю расширение приложения для моего основного приложения, которое взаимодействует через JSON. Темы и данные находятся в JSON и анализируются с помощью кодируемого протокола от Apple. Проблема, с которой я сейчас сталкиваюсь, - это совместимость NSAttributedString. Я знаю, что он не встроен, но я знаю, что он может быть преобразован в данные и обратно в nsattributedstring .
Что у меня до сих пор?
Приведите NSAttributedString к данным, чтобы поделиться им через JSON.
if let attributedText = something.attributedText {
do {
let htmlData = try attributedText.data(from: NSRange(location: 0, length: attributedText.length), documentAttributes: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType])
let htmlString = String(data: htmlData, encoding: .utf8) ?? ""
} catch {
print(error)
}
}
Привести HTML-строку JSON обратно к NSAttributedString:
do {
return try NSAttributedString(data: self, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
} catch {
print("error:", error)
return nil
}
Мой вопрос?
Как создать структуру, имеющую свойство nsAttributedTitle, имеющее тип NSAttributedString, и сделать ее совместимой с кодируемым декодером?
Пример структуры (не задумываясь о кодируемой совместимости):
struct attributedTitle: Codable {
var title: NSAttributedString
enum CodingKeys: String, CodingKey {
case title
}
public func encode(to encoder: Encoder) throws {}
public init(from decoder: Decoder) throws {}
}