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'에 바인딩하는 것과 동일해야한다는 것입니다. 후자가 효과가없는 이유를 나는 볼 수 없다. 어떤 아이디어? 이 포럼 및 다른 포럼에서 비슷한 질문을 보았지만 아직 설명이나 해결책을 찾지 못했습니다.
아니요, NSTextField에 열 합계를 넣으려고하지 않습니다. 그건 쉽고 잘 작동합니다. 내가 겪고있는 문제는 NSTableView의 제 2 열 바인딩입니다. 이 칼럼에서 해당 국가의 모든 지점에 걸쳐 각 국가의 총 매출을 표시하고 싶습니다. 하지만 도와 주려고 고맙습니다. 고맙습니다. – jfewtr
확인. 이제 알겠습니다. 그것은 당신이 두 번째 엔티티 인 하나의 컨트롤러로 2 개의 엔티티를 관리하려고하는 것 같습니다. 내 생각 엔 NSArrayController keypath가 totalSales를 국가 수준의 t.i로 가져 오는 솔루션과 관련하여이를 처리 할 수 없다는 것입니다. 기초 엔티티에 – mbpro