Неоднозначная ссылка на член 'decode (_: forKey :)' swift4 - PullRequest
0 голосов
/ 07 мая 2018

Я анализирую ответ, который необходимо преобразовать из словаря на сервере (который является устаревшим форматом данных), - просто в массив строк на стороне клиента. Поэтому я хочу декодировать ключ, называемый «data», как словарь, чтобы я мог перебирать ключи и создавать массив строк на стороне клиента.

init(from decoder: Decoder) throws  {
  let values = try decoder.container(keyedBy: CodingKeys.self)
  do {
    let some_data_dictionary = try values.decode([String:Any].self, forKey: CodingKeys.data)

    for (kind, values) in some_data_dictionary {
      self.data_array.append(kind)  
    }
  } catch {
    print("we could not get 'data' as [String:Any] in legacy data \(error.localizedDescription)")
  }
}

Я получаю ошибку: Ambiguous reference to member 'decode(_:forKey:)'

1 Ответ

0 голосов
/ 07 мая 2018

Похоже, что Swift 'Codable' не может поддерживать Any или использовать [String: Any], поэтому используйте этот пост здесь Swift 4 декодируемых вложенных json со случайными ключевыми атрибутами

Мне удалось создать структуру для класса, который я бы не использовал, под названием LegacyData, и затем распаковать ключи в массив строк

    do
    {
      let legacy_data = try values.decode([String:LegacyData].self, forKey: CodingKeys.data)

      self.array = Array(legacy_data.keys)
    }
    catch
    {
      print("no legacy_data \(error) \n")
    }
...