【发布时间】:2011-02-28 14:14:42
【问题描述】:
我正在寻找一种有效的方法来做到这一点。我有一个具有 2 个属性的实体:isPrivate 和点。 isPrivate 可能具有以下两个值之一:y 或 n。点数,-200 到 200 范围内的数字。
我需要按以下方式对分数进行分组:
-200 to 0: 340pts
0 to 100: 231pts
100 to 200: 987pts.
我目前正在运行一个谓词来获取记录,我需要的每个范围都有一个:
...
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isPrivate = %y"];
...
NSArray *ks = [[NSArray alloc] initWithArray:[context executeFetchRequest:fetchRequest error:&error]];
NSNumber *t = [ks valueForKeyPath:@"@sum.points"];
...
它有效,但我正在寻找更好的方法。
首先,按照我的做法,我将记录加载到内存中,然后加载到 NSArray 中。如果我能避免这种情况,那就完美了 其次,如果我能一步到位,可能会更好。
对此的完美解决方案是在单个谓词中对记录进行分组和求和,不要将记录加载到内存中,只获取总和,而不是所有数据。
tks.
【问题讨论】:
-
您将 CoreData 视为数据库。这是您问题的根本缺陷。 CoreData 不是 数据库。它是一个对象图管理系统。它可能在下面使用 SQLite 数据库,但这是一个实现细节。 CoreData 在更高的抽象级别上工作。
标签: iphone objective-c core-data group-by sum