@ Роб, я думаю, ты прав. Это была первая реализация. Кстати, я не буду удалять этот ответ, потому что нет хороших примеров для динамического разбора 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>]

Что должно быть здесь «Х», или как правильно достичь этого? Чего мне не хватает?

Ответы на вопрос(2)

Ваш ответ на вопрос