Фильтр json ответа в массиве словаря внутри словаря Swift iOS
Я получаю ответ от 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, я мог отфильтровать продукты, содержащие значение "Стул", используя
let namepredicate = NSPredicate(format: "title == Chair")
self.filteredProducts = (self.product).filteredArrayUsingPredicate(namepredicate)
Но как я могу отфильтровать "Цвет", "Черный", который внутри атрибутов, и "Черный" внутри другого массива (Swift)?
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
}