带有 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 不返回任何结果

带有特殊字符的 NSPredicate 过滤

带有 SUBQUERY 的 NSPredicate 不起作用

使用 NSPredicate 解析带有变量的公式