带有 NSPredicate 的 NSFetchRequest 不返回任何结果
Posted
技术标签:
【中文标题】带有 NSPredicate 的 NSFetchRequest 不返回任何结果【英文标题】:NSFetchRequest with NSPredicate not returning any results 【发布时间】:2013-05-04 05:16:54 【问题描述】:以下 NSFetchRequest 不会将任何结果返回到数组中。我怀疑 NSPredicate 的语法有问题。有什么想法吗?
-(NSManagedObject*)requestTheSingleEntity:(NSString *)entityDescription ForWhichIntegerAttribute:(NSString *)attribute isEqualTo:(int)value
NSFetchRequest *request = [[NSFetchRequest alloc]init];
NSEntityDescription *e = [[model entitiesByName] objectForKey:entityDescription];
[request setEntity:e];
NSPredicate *p = [NSPredicate predicateWithFormat:@"(%@ == %@)", attribute, [NSNumber numberWithInt:value]];
[request setPredicate:p];
NSError *er;
NSArray *results = [context executeFetchRequest:request error:&er];
NSLog(@"the count of results = %d", [results count]);
【问题讨论】:
【参考方案1】:属性必须使用%K
,而不是%@
:
NSPredicate *p = [NSPredicate predicateWithFormat:@"%K == %@", attribute, [NSNumber numberWithInt:value]];
【讨论】:
以上是关于带有 NSPredicate 的 NSFetchRequest 不返回任何结果的主要内容,如果未能解决你的问题,请参考以下文章
带有 NSPredicate 的 NSFetchedResultsController 未更新
带有 groupBy 的 nspredicate 不喜欢带有 nsdate 的谓词比较
带有 NSPredicate 的 NSFetchRequest 不返回任何结果