假设我有一个名为Person的核心数据实体。我如何获得属性符合特定值的NSArray?例如某个特定年龄,身高或体重的人......或者身高,体重和年龄都是特定值的人......
我可以像这样使用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
答案 0 :(得分:1)
如果在变量中包含这些值,则可以按照给定的语句进行操作。
[fetchResults filterUsingPredicate:[NSPredicate predicateWithFormat:@“age ==%i OR hieght ==%i AND weight ==%i”,年龄,身高,体重]];
而且,对于特定值,您的方法也是正确的,但您的语句有语法错误,因此保持正确的语法
答案 1 :(得分: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:
将排序描述符数组传递给提取请求。