如何仅获取匹配Bool属性的某些对象

时间:2011-07-31 14:48:45

标签: iphone core-data properties boolean nsfetchrequest

每次从数据库中获取对象时,我都会获得所有对象。现在,我必须在表视图中仅获取并显示存储在数据库中的一些对象。

为此,我想在我的实体中添加一个新属性,一个BOOL属性,这样我就只能获取具有此属性值等于YES或NO的对象,具体取决于情况。

有可能做这样的事吗?

我发现-setPropertiesToFetch:类的NSFetchRequest方法很有用,但我不知道是否可以用它来查看BOOL的不同值。

1 个答案:

答案 0 :(得分:3)

听起来你只想使用谓词。 NSPredicate Class Reference提供了如何使用它们的好主意。基本上,它会为您的结果添加一个过滤器。例如,假设您有一个核心数据对象,其属性myBool是一个BOOL(当然,存储为NSNumber)。要根据此结果过滤您的结果,您可以使用类似

的内容
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myBool == %@", [NSNumber numberWithBool:YES]];
[fetchRequest setPredicate:predicate];

然后继续正常。这将仅返回myBool值为YES的结果。

话虽如此,如果您使用请求简单地填充tableView,最好使用NSFetchedResultsController。可以找到关于如何实现它的精彩教程here