NSFetchRequest 不适用于谓词

Posted

技术标签:

【中文标题】NSFetchRequest 不适用于谓词【英文标题】:NSFetchRequest not working with predicate 【发布时间】:2012-08-30 14:46:27 【问题描述】:

我有这个代码:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Entry"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"version == %@", @"1.0"];

[request setPredicate:predicate];

NSArray *results = [managedObjectContext executeFetchRequest:request error:nil];

实体“Entry”有一个名为“version”的属性,它是一个字符串。上面的谓词似乎不仅仅返回字符串为“1.0”的条目,而是返回一些设置为“1.1”的条目。

我做错了吗?

【问题讨论】:

你试过用 = 而不是 == 吗? 谓词对我来说看起来不错。你试过别的吗? 【参考方案1】:

尝试在谓词表达式周围放置圆括号 ()

"(version == %@)"

【讨论】:

【参考方案2】:

看看apple doc的

如果是==,请尝试使用like 或:

NSPredicate *predicate = [NSPredicate predicateWithFormat:  
                                       @"(version == %@)", @"1.0"];

【讨论】:

以上是关于NSFetchRequest 不适用于谓词的主要内容,如果未能解决你的问题,请参考以下文章

NSFetchRequest 谓词语法

NSFetchRequest 谓词不一致 iOS (NSFetchedResultsController) 与 Mac (NSArrayController)

带有 NSdate 谓词的 NSFetchrequest

谓词不适用于 CoreData - Swift 4

你如何构造 NSFetchRequest setHavingPredicate: 的谓词?

NSPredicate 用于 NSFetchRequest 中的多个匹配项