-2

我的数据模型:

    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].name

var myfinalDataArray = [["title": [ProductResponse]], ....]

比如,

[“cata1”:[ProductResponse .catagory[0].name == cata1] 的产品列表],“cat2”:[ProductResponse 类别[0].name == cat2 的产品列表
,....]

密钥将来自 ProductResponse 。类别[0].name

4

1 回答 1

0

你可以使用:

Dictionary(grouping: catProducts, by: {
  $0.categories?.first?.name 
})

它应该返回一个字典[String : ProductResponse],包含catProducts按第一个类别名称分组。

这个问题中一个非常相似的问题的一些很好的答案:How to group by the elements of an array in Swift

于 2019-03-15T10:24:09.330 回答