【发布时间】:2014-01-14 12:52:34
【问题描述】:
我正在尝试将自定义字段添加到实体,以便在使用 NSFetchedResultsController 获取对象时使用该字段创建谓词。该字段是全名:
@dynamic first_name;
@dynamic last_name;
@dynamic full_name;
-(NSString *)full_name {
[self willAccessValueForKey:@"full_name"];
NSString *name = [NSString stringWithFormat:@"%@ %@", self.first_name, self.last_name];
[self didAccessValueForKey:@"full_name"];
return name;
}
然后,使用 NSFetchedResultsController,我尝试通过 full_name 获取匹配的对象:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSArray *sortDescriptors = [NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"full_name" ascending:YES]];
NSMutableArray *predicateArray = [NSMutableArray array];
[predicateArray addObject:[NSPredicate predicateWithFormat:@"contact_full_name contains == '%@' ", trimmedSearchString]];
filterPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:predicateArray];
[fetchRequest setPredicate:filterPredicate];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[self managedObjectContext] sectionNameKeyPath:nil cacheName:nil];
但是,查询始终返回空结果,即使查询的全名存在于数据存储中。任何想法为什么谓词不返回有效结果?
【问题讨论】: