【发布时间】:2018-05-06 09:51:32
【问题描述】:
我使用动态字符串键解码 JSON,如下所示:
{
"dynamickey1":
{"infos1": "blabla","infos2": 21},
"dynamickey2":
{"infos1": "blabla","infos2": 12},
... }
它们按我想要的方式排序,因为我在 URL 中放了一个字符串列表。但是当它使用下面的代码解码字典时(编辑:我放了完整的代码),我失去了顺序:
struct Devise {
let nom : String
let EUR: Float
let ETH: Float
}
struct DataPrix {
let devises: [Devise]
struct DataPrixCodingKeys: CodingKey {
let stringValue : String
init?(stringValue: String) {
self.stringValue = stringValue
}
var intValue : Int? {return nil}
init?(intValue: Int) {return nil}
}
enum DeviseCodingKeys: String, CodingKey {
case ETH
case EUR
}
}
let decoder = JSONDecoder()
extension DataPrix: Decodable {
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy : DataPrixCodingKeys.self)
self.devises = try (container.allKeys).map { key in
let devisesContainer = try container.nestedContainer(keyedBy: DeviseCodingKeys.self, forKey: key)
let deviseName = key.stringValue
let EUR = try devisesContainer.decode(Float.self, forKey: .EUR)
let ETH = try devisesContainer.decode(Float.self, forKey: .ETH)
return Devise(nom: deviseName, EUR: EUR, ETH: ETH)
}
}
}
那么此时是否可以按字母顺序对它们进行排序,或者至少保持与我在初始列表中的顺序相同?
【问题讨论】:
-
一如既往,不要在 Swift 中使用
NSDictionary。 -
它是如何“不工作”的?
-
@Sweeper 对不起我编辑了,我有错误
Ambiguous reference to member '<' -
尝试使用
(<)将运算符称为函数而不是内联的应用程序。 -
@ItaiFerber 同样的错误