我有一个核心数据项目,有几个实体有关系。我使用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的多对多关系 - >订单 - >项目。一个工作有很多订单,每个订单都有很多项目。项目由name
和cost
组成。
我在窗口上有一个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
显示所有数据 - 所以它就在那里。
答案 0 :(得分:0)
您不需要方法。订单总费用的关键路径为item.cost.@sum
。