2015-04-24 2 views
0

Возможно ли создать NSPredicate с использованием массива словарей?NSPredicate: CoreData fetchRequest отфильтрован Array из словарей

У меня есть следующая структура:

[{ name: "foo", city:"Paris"},{name:"bar", city:"London"}] 

An Я хочу, чтобы фильтровать мой NSFetchRequest этих паров. (если свойства имеют одинаковые имена в CoreData)

При передаче массива я могу использовать ключевое слово IN. Но я не понимаю, как эта работа работает с массивом словарей.

ответ

1

Я не думаю, что вы сможете использовать IN, поэтому вам нужно использовать число OR s. Наброски:

  1. Итерации через все элементы массива.
  2. Для каждого элемента (dictionary), построить предикат вида:

    [NSPredicate predicateWithFormat:@"name == %@ AND city == %@",[dictionary objectForKey:@"name"], [dictionary objectForKey:@"city"]]; 
    
  3. Добавить каждый такой предикат к NSMutableArray (array) предикатов

  4. Построить соединение предикат из массива с помощью:

    [NSCompoundPredicate orPredicateWithSubpredicates:array] 
    

Если производительность является проблемой, рассмотрите возможность создания индивидуальных предикатов с переменными замещения, а не с помощью формата.

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