@ Роб, я думаю, ты прав. Это была первая реализация. Кстати, я не буду удалять этот ответ, потому что нет хороших примеров для динамического разбора swift 4 JSON.
для хранения объектов моделей в словаре и хотел бы сериализовать весь словарь, используяJSONEncoder
в данные, а затем в строку и сохранить его.
Идея состоит в том, чтобы использовать Swift 4 из коробкиEncodable
чтобы все, что я добавляю в словарь, было сериализовано, что может включать в себя примитивы и пользовательские объекты (которые сами будут соответствоватьEncodable
).
Проблема заключается в том, какой тип я должен объявить словарь:
Если я использую[String: Any]
, он не будет знать, как кодироватьAny
и если мне нужно привести его в конкретный конкретный тип, это как бы побеждает назначение дженериковЕсли я использую[String: Encodable]
во время выполнения произойдет сбой, сказав, что Encodable не соответствует самому себе, что понятно, так как ему нужен конкретный типЧтобы решить эту проблему, я подумал о создании оболочки: протокол со связанным типомили же структура со значением общего типа:
struct Serializable<T: Encodable> {
var value: T?
init(value: T) {
self.value = value
}
}
Но проблема остается, при объявлении типа вышеупомянутого словаря, я все еще должен предоставить конкретный тип ..
var dictionary: [String: Serializable<X>]
Что должно быть здесь «Х», или как правильно достичь этого? Чего мне не хватает?