0

製品のNSDictionaryリストの応答を取得しています

 {
"products": {
    "title": "Chair",
    "regular_price": "2.22",
    "dimensions": {
        "width": "",
        "height": "",
        "length": ""
    },
    "attributes": [{
        "options": ["11\/30\/2016"],
        "name": "Arrival Date"
    }, {
        "options": ["Black"],
        "name": "Color"
    }],
    "categories": ["28"]
}

}.....

NSPredicate を使用すると、「Chair」という値を含む製品をフィルタリングできます。

let namepredicate = NSPredicate(format: "title == Chair")
           self.filteredProducts = (self.product).filteredArrayUsingPredicate(namepredicate)

しかし、属性内の「色」、「黒」、および「黒」が別の配列(Swift)内にあるようにするにはどうすればよいですか?

4

1 に答える 1

1

まず、名前self.productを に変更しself.productsます。これは複数の製品の配列です。それに応じて名前を付けます。

既存のNSPredicate混乱を次のように置き換えることができます。

self.filteredProducts = self.products.filter{ $0["title"] == "Chair" }

そして、次のように色でフィルタリングできます。

self.filteredProducts = self.products.filter{ product in
    return product["attributes"]?.contains{ attribute in
        return attribute["name"] == "Color" &&
               attribute["options"]?.contains("Black") ?? false
    } ?? false
}
于 2016-12-01T07:27:26.090 に答える