使用NSPredicate来添加所有值

时间:2012-08-13 01:09:08

标签: iphone core-data nspredicate

我有一个使用核心数据的程序。在循环中添加每个实体的数值时,我有点作弊。我读到了使用NSPredicate来过滤数据,但我不知道如何操纵数据或如何存储结果。谢谢。

2 个答案:

答案 0 :(得分:12)

如果符合您的要求,您可以分两步完成。

  1. 首先使用NSPredicate过滤您的数据,并将其全部保存在NSArray
  2. 然后使用具有键值编码的复合运算符来获得总和。
  3. 以下是如何完成的示例。为了使其自包含,使用硬编码数组代替核心数据:

    // In reality this array would be the result of a Core Data query:
    NSArray *numbers = @[@{@"number":@3},
                         @{@"number":@2}];
    
    NSNumber *sum = [numbers valueForKeyPath:@"@sum.number"];
    

    这里的诀窍是@sum复合运算符。您可以阅读它(以及另外几个类似的运算符)here

答案 1 :(得分:1)

您可以使用NSExpressionDescription让Core Data进行求和。我在做类似的事情时使用this article as a tutorial