使用特定值计算Core Data中的实体

时间:2011-07-19 21:53:57

标签: core-data nspredicate predicatebuilder

我有一个具有一些属性的实体。我的tabes已经填充(SQLite表) 在一个属性(我称之为Attribute1)中,我有一个bool值,在使用我的应用程序时会发生变化。

如何使用Attribute1值YES返回我的实体计数?

我已经阅读过“核心数据教程”和“谓词编程指南”,但我不明白如何继续...

    NSPredicate *predicate= [NSPredicate predicateWithFormat:@"Attribute1 == %@",[NSNumber numberWithBool:YES]];

我试过这个,然后呢?它似乎不起作用..

1 个答案:

答案 0 :(得分:3)

最好的办法是使用countForFetchRequest方法。设置谓词和获取请求,但不是执行实际的提取,而是执行countForFetchRequest,如下所示:

NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];

NSPredicate *predicate = 
    [NSPredicate predicateWithFormat:@"Attribute1 == %@",
        [NSNumber numberWithBool:YES]];

[request setPredicate:predicate];

NSUInteger count = [myManagedObjectContext countForFetchRequest:request error:nil];

您可以在Apple API文档中找到更多信息:

  

countForFetchRequest:错误:   如果传递给executeFetchRequest,则返回给定获取请求返回的对象数:error:。

  • (NSUInteger)countForFetchRequest:(NSFetchRequest )请求错误:(NSError * )错误 参数 请求 一个获取请求,指定获取的搜索条件。 错误 如果执行fetch时出现问题,则返回时包含描述问题的NSError实例。 回报价值 如果已将传递给executeFetchRequest,则返回给定获取请求的对象数:error:,如果发生错误,则返回NSNotFound。

状况 适用于iOS 3.0及更高版本。 宣告进入 NSManagedObjectContext.h