Encode AttructuctedString с пользовательскими атрибутами в JSONIOS

Программируем под IOS
Ответить
Anonymous
 Encode AttructuctedString с пользовательскими атрибутами в JSON

Сообщение Anonymous »

Swift 5.5 введен AttributedString Соответствие Codable , однако это не работает для меня, как я ожидал.

Код: Выделить всё

public enum TextCase: Codable {
case lowercase
case uppercase
}

public struct TextCaseAttribute: CodableAttributedStringKey {
public typealias Value = TextCase
public static var name = "TextCaseAttribute"
}

public extension AttributeScopes {
struct ExtendedTextAttributes: AttributeScope {
public let textCase: TextCaseAttribute
public let foundation: FoundationAttributes
}
var customAttributes: ExtendedTextAttributes.Type { ExtendedTextAttributes.self }
}

public extension AttributeDynamicLookup {
subscript(
dynamicMember keyPath: KeyPath
) -> T {
get { self[T.self] }
}
}
< /code>
и используйте его так: < /p>
    var hello: AttributedString {
var result = AttributedString("Hello")
result.textCase = .uppercase
result.font = .largeTitle
return result
}
Когда я использую jsonencoder, чтобы кодировать атрибутирование Это дает мне следующее:

Код: Выделить всё

po String(decoding: JSONEncoder().encode(hello), as: UTF8.self)
->
"[\"Hello\",{\"SwiftUI.Font\":{}}]"
Обратите внимание, что мой текстовый code> отсутствует плюс, я ожидал, что swiftui.font будет иметь значение.>

Подробнее здесь: https://stackoverflow.com/questions/755 ... es-to-json
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»