2016-11-30 4 views
0

я получаю ответ списка NSDictionary продукции какФильтр ответ JSON в массив словаря внутри словаря Swift IOS

{ 
"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) 

Но как я могу фильтровать «Color», «Black», который внутри атрибутов и «Black» находится внутри другого массива (Swift)?

+2

Там нет причин, чтобы использовать 'NSArray' или' NSPredicate' для что-то вроде этого. Используйте собственный 'Array' и' filter' Swift. – Alexander

+0

@AlexanderMomchliov Можете ли вы привести пример фильтрации ответа выше? –

+0

Конечно, я напишу быстрый ответ. – Alexander

ответ

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 
} 
+0

@ DineshKumar Я не следую ... что? – Alexander

+0

@ AlexanderMomchilov, В принципе, мне нужно отфильтровать массив на основе цвета, который находится внутри массива атрибутов, как показано в коде, разделенном в исходном вопросе. Фильтр по названию может работать, но мне нужно фильтровать на основе цвета, который не является прямым ключом в словаре. –

+0

О, я пропустил последнее предложение. Я уточню свой ответ. – Alexander

 Смежные вопросы

  • Нет связанных вопросов^_^