我正在解析一个响应,该响应需要从服务器上的字典(这是一种旧数据格式)转换为客户端上的简单字符串数组。因此,我想将称为“数据”的键解码为字典,以便我可以遍历键并在客户端上创建字符串数组。
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:)'
最佳答案
看起来Swift'Codable'无法支持Any或[String:Any]的使用,因此请在此处使用此帖子Swift 4 decodable nested json with random key attributes
我能够为一个我不会使用的类创建一个名为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")
}
关于swift - 对成员 'decode(_:forKey:)' swift4的含糊引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50215981/