通过与核心数据的关系对列进行求和

时间:2012-02-29 20:01:00

标签: xcode core-data cocoa-bindings

我试图修改Mike Swans Core Data Expenses tutorial,以便在一列中包含一个类别列表,并在下一列中显示其余额。

我尝试将第二列的值绑定到:

1. CategoryController.arrangedObjects.transactions.@sum.amount
2. CategoryController.arrangedObjects.@sum.transactions.@sum.amount

第2号似乎与现有条目短暂合作但显然不正确,因为我无法再次使用它。我得到的信息是

[<_NSFaultingMutableSet 0x100166b00> addObserver:forKeyPath:options:context:] is not supported. Key path: @sum.amount

如果没有代码,这可能吗?我很容易将所选类别的@sum放到标签中,但不能将整个列表放到列中......

我发现this message on the developer list并认为这可能是我追求的答案,但如果是这样,我希望有人能够更好地解释它。我尝试创建一个新的阵列控制器,但我尝试过的所有内容似乎都让我越来越深入到编程深渊中。

编辑: - 我修复了一个单独的问题,绑定到错误的控制器,并认为我重新审视了这一点。以上两个选项都有工作(列计数),但是当我尝试添加新类别时,它们都会导致该异常。尝试删除现有类别会导致另一个异常(我认为是第一个异常的反转):

Cannot remove an observer <NSTableBinder 0x10017e5b0> for the key path "transactions.@sum.amount" from <NSManagedObject 0x10303dda0> because it is not registered as an observer

1 个答案:

答案 0 :(得分:1)

我不知道这是否对你有所帮助,但我刚遇到一个类似的问题,即将NSTextField绑定到我的一个字段(arrayController.arrangedObjects。@ sum.duration)的总和会引发异常,而绑定到arrayController.selection。@ sum.duration工作正常。

我最终把它放在代码中,比如:

// In my ViewController class.
- (void) awakeFromNib
{
    [totalLabel bind:@"value" toObject:arrayController
         withKeyPath:@"arrangedObjects.@sum.duration" 
             options:nil];
}

......它似乎按预期工作。