2010-12-23 1 views
0

Mac OS X CoreData 앱. 국가 개체에 대한 관리되는 개체 컨텍스트에 바인딩 된 NSArrayController에 의해 제어되는 NSTableView입니다. Country 엔티티는 'name'속성과 대다수 관계 인 'branches'를 Branch 엔터티에 갖습니다. Branch 엔티티에는 'sales'속성 (NSNumber)이 있습니다.@sum 같은 컬렉션 연산자를 사용하는 NSTableColumn 바인딩

NSTableView에는 두 개의 NSTableColumn이 있습니다. 첫 번째는 국가 이름을 보여줍니다. 두 번째는 해당 지사의 전체 판매량을 표시해야합니다.

첫 번째 열의 값은 'name'모델 키 경로를 사용하여 NSArrayController의 arrangedObjects에 바인딩됩니다. 문제 없습니다.

두 번째 열의 값은 모델 키 경로가 'branches. @ sum.sales'인 NSArrayController의 arrangedObjects에 바인딩됩니다. 이것은 작동하지 않습니다. "addObserver : forKeyPath : options : context :] 오류 메시지가 표시됩니다. 키 경로 : @ sum.sales"

대신 CountrySales 클래스에 'totalSales'메서드를 추가하면

- (NSNumber *)totalSales 
{ 
    return [[self branches] valueForKeyPath:@"@sum.sales"]; 
} 

을하고 난 후 잘 작동 'totalSales'에 열을 바인딩 다음과 같이 구현됩니다. 콜렉션 운영자 문서에 대한 나의 이해는 단순히 'branches. @ sum.sales'에 바인딩하는 것과 동일해야한다는 것입니다. 후자가 효과가없는 이유를 나는 볼 수 없다. 어떤 아이디어? 이 포럼 및 다른 포럼에서 비슷한 질문을 보았지만 아직 설명이나 해결책을 찾지 못했습니다.

답변

0

아직 주제가 맞는지는 모르지만 답이 필요합니다.

두 번째 열의 값은 NSArrayController에 첫 번째와 정확히 같은 방식으로 바인딩되어야합니다. 왜 당신이 다르게 만들었는지 그리고 실제로 당신이 얻고 자했던 것이 무엇인지 모르겠습니다.

첫 번째 작업은 테이블 열을 배열 열에 바인딩하는 것이고 모든 열과 유형에 대해 동일한 방식으로 작동합니다.

두 번째 작업은 NSTextfield와 같은 특정 개체에 바인딩 된 특정 NSTableColumn의 합계를 얻는 것입니다. 이것은 다음과 같이 이루어집니다 :

[totalCountField bind: @"value" toObject: arrayController 
      withKeyPath:@"[email protected]" options:nil]; 
+0

아니요, NSTextField에 열 합계를 넣으려고하지 않습니다. 그건 쉽고 잘 작동합니다. 내가 겪고있는 문제는 NSTableView의 제 2 열 바인딩입니다. 이 칼럼에서 해당 국가의 모든 지점에 걸쳐 각 국가의 총 매출을 표시하고 싶습니다. 하지만 도와 주려고 고맙습니다. 고맙습니다. – jfewtr

+0

확인. 이제 알겠습니다. 그것은 당신이 두 번째 엔티티 인 하나의 컨트롤러로 2 개의 엔티티를 관리하려고하는 것 같습니다. 내 생각 엔 NSArrayController keypath가 totalSales를 국가 수준의 t.i로 가져 오는 솔루션과 관련하여이를 처리 할 수 ​​없다는 것입니다. 기초 엔티티에 – mbpro