iphone - 关系中的核心数据总和

标签 iphone objective-c core-data

我有一个有很多费用的类别实体。我想获得给定月份某个类别的所有费用总和:

- (NSNumber *)totalForMonth:(NSDate *)date { ...

<pre><code>NSPredicate *sumPredicate = [NSPredicate predicateWithFormat:@"(ANY %@ <= expenses.created_at) AND (ANY expenses.created_at <= %@)", [date beginningOfMonth], [date endOfMonth]]; NSFetchRequest *req = [[[NSFetchRequest alloc] init] autorelease]; [req setPredicate:sumPredicate]; [req setEntity:entity]; NSError *error; NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:req error:&error]; return [fetchedObjects valueForKeyPath:@"expenses.@sum.amount"]; </code></pre> <p>}</p>

此代码的问题在于它会抛出异常,因为显然这不是在关系上使用@sum 的方式。

最佳答案

您使用具有正确语法的@sum。最有可能的是,您刚刚弄错了键路径的另一部分,例如“费用”而不是“费用”。或者,您可能获取了错误的实体。

如果您只想获取此总和,请执行属性获取并将返回类型设置为字典。 (参见 NSFetchRequest 和核心数据编程指南)文档了解详情。这将返回一个字典数组,其唯一键是属性名称,其唯一值是一个托管对象的选定属性的值。它比获取完整对象更快并且使用更少的资源。

关于iphone - 关系中的核心数据总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5145738/

相关文章:

ios - 如何在 UIwebview 上播放 vimeo 视频而不是全屏 ios swift 2.0

多型号 iPhone Core 数据迁移

ios - 为免费应用程序设置定价层

objective-c - 如何检测两个图像的碰撞?

objective-c - 包含可访问方法的 iOS 类

c++ - 函数调用-Objective C

ios - 核心数据并发调试

iPhone Core Data 不从 Sqlite3 获取任何数据

iphone - 关闭当前模态视图 Controller 的最优雅方式?

iphone - 将视频流式传输(或渐进式下载)到 Droid 浏览器