Используя NSPredicate, чтобы получить массив объектов Core Data? - PullRequest
1 голос
/ 23 ноября 2010

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

Могу ли я использовать 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

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

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

// 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 голос
/ 23 ноября 2010

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

[fetchResults filterUsingPredicate: [NSPredicate finalateWithFormat: @ "age ==% i OR hieght ==% i AND weight ==% i", age, height, weight]];

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

...