2010-11-23 2 views
1

Скажем, у меня есть объект Data Data, называемый Person. Как я получу NSArray лиц, чьи свойства соответствуют определенным значениям? Например кто-то определенный возраст, рост, вес или ... или кто-то с чьим ростом, вес и возраст конкретных значений ...Использование NSPredicate для получения массива объектов Core Data?

Могу ли я использовать NSPredicate так:

NSPredicate *pred = 
[NSPredicate predicateWithFormat: 
@"(age == 25) OR (height_in_cms == 185) OR (age == 30 AND height_in_cms == 170 AND weight_in_kgs == 80)"; 
// All properties are NSNumber 

ответ

1

Я не специалист по синтаксису predicateWithFormat:, но есть основная суть. Вы можете найти подробную информацию о формате в Apple Predicate Programming Guide. Если вы спрашиваете, что делать с предикатом, как только у вас есть, вот фрагмент, который показывает вам шаги:

// Create a fetch request. 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

// Set the entity for the fetch request. 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 
[entity release]; 

// Set the predicate for the fetch request. 
[fetchRequest setPredicate:predicate]; 

// Perform the fetch. 
NSError *error; 
NSArray *array = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
[fetchRequest release]; 

Если вы хотите, чтобы результаты были отсортированы, вы можете передать массив сортировки дескрипторов к запросу выборки, используя setSortDescriptors: перед выполнением выборки.

1

Вы можете следовать данному утверждению, если у вас есть это значение в переменной.

[fetchResults filterUsingPredicate: [предикат NSPredicateWithFormat: @ "age ==% i OR hieght ==% i И вес ==% i", возраст, высота, вес]];

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

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