Arrays swift中的阵列数据分组

Arrays swift中的阵列数据分组,arrays,swift,Arrays,Swift,我的数据模型: struct ProductResponse: Codable { var id: Int? var name: String? var slug: String? var permalink: String? var dateCreated: String? var description: String? var shortDescription: String? var sku: String?

我的数据模型:

    struct ProductResponse: Codable {
    var id: Int?
    var name: String?
    var slug: String?
    var permalink: String?
    var dateCreated: String?
    var description: String?
    var shortDescription: String?
    var sku: String?
    var price: String?
    var regularPrice: String?
    var salePrice: String?
    var priceHtml: String?
    var image: [ProductImageResponse]?
    var catagories: [CatagoriesResponse]?


    enum CodingKeys: String, CodingKey {
        case id = "id"
        case name = "name"
        case slug = "slug"
        case permalink = "permalink"
        case dateCreated = "date_created"
        case description = "description"
        case shortDescription = "short_description"
        case sku = "sku"
        case price = "price"
        case regularPrice = "regular_price"
        case salePrice = "sale_price"
        case priceHtml = "price_html"
        case image = "images"
        case catagories = "categories"
    }
}

struct ProductImageResponse: Codable {
    var id: Int?
    var source: String?
    var name: String?
    var alt: String?
    var position: Int
    enum CodingKeys: String, CodingKey {
        case id = "id"
        case source = "src"
        case name = "name"
        case alt = "alt"
        case position = "position"
    }
}

struct CatagoriesResponse: Codable {
    var id: Int
    var name: String
    var slug: String

    enum CodingKeys: String, CodingKey{
        case id = "id"
        case name = "name"
        case slug = "slug"
    }
}
我有一系列的数据

        var catProducts = [ProductResponse]()
好的,我想将具有相同类别[0].name的产品分组到一个数组中。并使最后一个数组包含具有相同类别[0]的分组产品。名称

变量myfinalDataArray=[[“标题”:[ProductResponse]],…]

例如

[“cata1”:[具有ProductResponse.catagory[0]的产品列表。名称== cata1]],“cat2”:[具有ProductResponse的产品列表
类别[0]。名称==cat2,…。]

密钥将来自ProductResponse。类别[0]。名称

您可以使用:

Dictionary(grouping: catProducts, by: {
  $0.categories?.first?.name 
})
它应该返回一个字典
[String:ProductResponse]
,其中包含按第一个类别名称分组的
catProducts

对于这个问题中的一个非常类似的问题,有一些很好的答案:

使用