Po vykonaní slušného množstva google a pozeraní sa sem verím, že sa toto „nedá urobiť“. Som zaujímavý v tom, prečo sa to nedá „urobiť“ a najlepším riešením ľudí je, ponúkam baňu nižšie.
Používam jednoduchý model oddelenia <---->> zamestnanca, pričom atribúty name majú aj zamestnanecká entita a tiež atribúty timeWorked.
Problém
Chcel by som zviazať tabuľku s jedným stĺpcom zobrazujúcim departement.name a druhým stĺpcom zobrazujúcim oddelenie. @ Sum.employees.timeWorked. Pokus o vykonanie tohto postupu vedie k chybe:
[<_NSFaultingMutableSet 0x1d5e50> addObserver:forKeyPath:options:context:] is not supported. Key path: timeWorked
Cannot remove an observer <NSTableBinder 0x1a9280> for the key path "employees.timeWorked" from <Depatement 0x1faf40> because it is not registered as an observer.
Väzba na adresu department.employees. @ Count však funguje (ale chcem viac!).
Iné diskusie
Tu je ďalšia téma s rovnakým problémom: nstablecolumn-väzobné pomocou zberného operátormi podobný súčtu
A ďalší: kakaové-väzby viažuci-k-mnohých konci-z-n na-vzťah
Moje riešenie
Moje riešenie tohto problému je vytvoriť atribút pre entitu oddelenia, ktorá vykonáva súčet:
-(NSNumber *)departmentHours {
return [self valueForKeyPath:@"employees.@sum.timeWorked"]; }
a potom sa k tomu jednoducho naviazať.
Je to len trochu viac kódu po pridaní týchtoatribúty, keď chcem urobiť nejaké porovnanie / agregáciu údajov, ale mám pocit, že by bolo elegantnejšie vedieť sa na ne naviazať oddelenie. @ sum.employees.timeWorked.
Nejaké nápady?? Dôvody, prečo to nefunguje? Lepšie riešenia?
Na zdravie všetkým
odpovede:
0 pre odpoveď č. 1Píšeš o viazanosti na department.@sum.employees.timeWorked
- myslím si však, že by si mal byť záväzný department.employees.@sum.timeWorked