NSSet和重复,我需要重复?

时间:2014-11-11 08:51:08

标签: cocoa core-data

我有一个核心数据项目,有几个实体有关系。我使用NSSet来提取数据,但发现NSSet删除了重复项 - 至少这是我的程序中发生的事情。

我在模型中创建了实体和属性,然后创建了关联的NSManagedObjects,因此我可以编写自定义方法。我有ArrayController连接到实体和连接到arrayController的表格。第0列显示订单,第1列显示该订单的总计 - 订单与项目具有多对多关系。

因此,将第2列绑定设置为arrayController,并将modelKeyPath设置为returnBalance方法。

我在NSManagedObject中有以下方法。

-(NSString *)returnBalance{

 NSSet *setTotal = [self valueForKeyPath:@"item.cost"];

 NSArray *array = [setTotal allObjects];

 double ttl = 0.0;

 for (NSNumber *d in array) {

    ttl = ttl + [d doubleValue];

 }
 NSNumber *total = [NSNumber numberWithDouble:ttl];
 return [total stringValue];
}

一切正常,除非NSSet删除重复项。我搜索过,但没有找到另一种从关系数据中提取信息的方法。有什么想法吗?

[编辑] ---------------

对于Schema,我有3个实体(Job,Order和Items)。来自Job的多对多关系 - >订单 - >项目。一个工作有很多订单,每个订单都有很多项目。项目由namecost组成。

我在窗口上有一个2列NSTableView,其中列出了第0列中的订单,并希望第1列中的订单总数。因此,我可以看到所有订单和每个订单的总数。他们。如果您点击订单,则会有第二个NSTableView显示该订单的所有商品。

功能明智的一切“有效”...仅仅使用NSSet不提供所有数据(即重复)。

Order实体有一个关联的NSManagedObject,这是我放置-(NSString *) returnBalance方法的地方。

- [详细] - - - - 我已经尝试了几种方法,并且所有方法都可以删除重复项 - 这是怎么回事?

 NSArray *array = [NSArray arrayWithObjects:[self valueForKeyPath:@"item.cost"], nil];

 NSString *costString = [self valueForKeyPath:@"item.cost"];

始终如一,并非所有数据都存在。但是,在窗口上,第二个NSTableView显示所有数据 - 所以它就在那里。

1 个答案:

答案 0 :(得分:0)

您不需要方法。订单总费用的关键路径为item.cost.@sum