【问题标题】:Convert multilevel array to dictionary将多级数组转换为字典
【发布时间】:2019-11-06 10:16:59
【问题描述】:

我有以下模型:Car 和 CarType,我在下面创建了一系列汽车。我想将该汽车数组转换为字典 [String: [Car]]

struct Car {
   let carId: Int
   let carName: String
   let carType: [Category]

   init(carId: Int, carName: String, carType: [Category]) {
                self.carId = carId
                self.carName = carName
                self.carType = carType
   }
}

struct Category {
   let categoryId: Int
   let categoryName: String
}

var cat1 = Category(categoryId: 123, categoryName: "Truck")
var cat2 = Category(categoryId: 123, categoryName: "Family")

let car1 = Car(carId: 1, carName: "Ford", carType: [cat1])
let car2 = Car(carId: 2, carName: "Honda", carType: [cat1, cat2])

let cars = [car1, car2]

我想将汽车数组转换为 [String: [Car]] 字典。

【问题讨论】:

  • String(字典键)代表什么?并且请避免结构中的冗余信息,例如 struct Car { let id: Int; let name: String; let type: [Category] } 根据命名指南就足够了。
  • 谢谢@vadian。字典中的字符串是 carName。
  • 但是car1car2 有不同的名字。你想要["Ford": [car1], "Honda": [car2]]吗?
  • 是的,确实如此。

标签: ios swift swift3


【解决方案1】:

有一个API:Dictionary(grouping:by:)

let groupedCars = Dictionary(grouping: cars, by: {$0.carName})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 2017-08-26
    • 2017-07-21
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多