神奇的记录:总和聚合
Posted
技术标签:
【中文标题】神奇的记录:总和聚合【英文标题】:Magical Record : sum aggregation 【发布时间】:2012-12-19 16:40:49 【问题描述】:我正在对实体进行聚合,代码是:
NSPredicate *betweenInterval = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date < %@)", [interval.start value], [interval.end value]];
NSNumber * nbPoints = [OMSPointsEventEntity MR_aggregateOperation:@"sum:" onAttribute:@"nbPoints" withPredicate:betweenInterval];
return [nbPoints intValue];
而 NbPoints 为零,我不知道为什么...
提示:我的实体上的属性 NbPoints 是 NSNumber 应该是 int 吗?
【问题讨论】:
你需要[interval.start值]吗?我认为可以只传递日期...另一件事要检查以确保您的谓词没有聚合返回数据...您可能会在不知情的情况下过滤掉所有内容。 如果我用这个谓词做 MR_findall + [fetchedObjects valueForKeyPath:@"@sum.nbPoints"];我有我要找的钱。 [interval.start value] 是我自己的类,它返回一个 NSDate。 【参考方案1】:我不了解 MR,但在标准 Cord Data 中,聚合函数必须以 @
开头。也许您应该在 MR 文档中查找此内容。
...MR_aggregateOperation:@"@sum"... // ???
如果你能得到一个包含所有PointsEvent
实体的数组,你可以在获取之后自己计算:
NSNumber *sum = [fetchedObjects valueForKeyPath:@"@sum.nbPoints"];
至于属性数据类型,您的设置似乎是正确的:int32
或类似或 float
在核心数据模型中,NSNumber
在您的 NSManagedObject
子类中。
【讨论】:
我没有找到这方面的任何文档,这里有几个我找到的链接(函数代码:github.com/magicalpanda/MagicalRecord/blob/master/MagicalRecord/…,官方github页面:github.com/magicalpanda/MagicalRecord) 好吧,恭喜您决定使用未记录的框架。您是否尝试过第二种解决方案?以上是关于神奇的记录:总和聚合的主要内容,如果未能解决你的问题,请参考以下文章