Мои данные никогда не заполняют мой класс кодируемым протоколом

Использование additionalProperties - это правильный способ описать hashamp с помощью спецификации OpenAPI (fka. Swagger), но пользовательский интерфейс Swagger пока не отображает их.

Проблема отслеживается здесь https: / /github.com/swagger-api/swagger-ui/issues/1248

Между тем вы можете использовать этот трюк, чтобы определить не требуемое свойство (default в примере ниже) тот же тип объектов карты и дать некоторый намек в описании:

swagger: "2.0"
info:
  version: 1.0.0
  title: Hashmap

paths: {}

definitions:
  MapItem:
    properties:
      firstname:
        type: string
      lastname:
        type: string
  Map:
    description: a (key, MapItem) map. `default`is an example key
    properties:
      default:
        $ref: '#/definitions/MapItem'
    additionalProperties:
      $ref: '#/definitions/MapItem'

Это описание не изменяет контракт API и улучшает документацию.

1
задан Badr Filali 15 January 2019 в 15:48
поделиться

1 ответ

Поскольку ваш json - это просто массив объектов, цикл foreach не нужен, и вы можете просто указать, что результат декодирования должен быть массивом News, указав тип результата в квадратных скобках: [News].self [116 ]

guard let news = try? JSONDecoder().decode([News].self, from: Data(jsonNews.utf8)) else {
    debugPrint("An error has occurred")
    return
}

debugPrint(news)
arrayNews = news

Кроме того, если нет конкретной причины, по которой ваша модель должна наследоваться от NSObject, вы можете упростить ее, сделав ее struct. Также вам не нужны значения по умолчанию, так как все значения будут назначаться инициализатором декодера

struct News: Decodable {
    let idPlace, namePlace, dateMsg, msg, urlPicture: String
}
0
ответ дан Robert Dresler 15 January 2019 в 15:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: