2010-09-11 17 views
1

J'ai (par exemple) une table avec des voitures. Les voitures ont chacune un nom, une couleur et un kilométrage.Cacao; Liaison d'un champ de texte à la somme d'un tableau filtré (à partir d'un NSArrayController)

je peux avoir un champ de texte qui affiche le kilométrage total de toutes les voitures en utilisant les liaisons dans le générateur d'interface:

Value - se lient à:. Controller.arrangedObjects Array Car @ sum.mielage

Cependant, Je voudrais des boîtes séparées pour le kilométrage total effectué par les voitures rouges et les voitures de blues. Je sais que je peux coder cela en utilisant un prédicat pour filtrer le tableau par exemple:

NSPredicate *bluePredicate = [NSPredicate predicateWithFormat:@"color like blue"]; 

NSArray *blueCars = [[carArrayController arrangedObjects] filteredArrayUsingPredicate:bluePredicate]; 

NSNumber *blueMileage = [blueFilteredArray valueForKeyPath:@"@sum.mileage"]; 

Mais je ne veux pas avoir à faire et doivent coder IBOutlets pour les zones de texte. Je veux le faire purement dans IB si possible.

Des idées?

Cheers, Oli

Répondre

0

Pourquoi ne pas créer un contrôleur RAID séparé pour chaque couleur de la voiture, alors? Ou est-ce aussi variable?

Si les couleurs de la voiture sont variables, la meilleure approche sera probablement toujours de le faire par programmation.

+0

Je pensais qu'il serait possible de faire avec plusieurs contrôleurs RAID (les couleurs sont fixes - seulement rouge et bleu :)) mais j'espérais juste qu'il y aurait une solution plus élégante. –

+0

Sur la note de l'utilisation d'un couple plus de contrôleurs de tableau, je ne peux pas sembler les amener à utiliser les données filtrées du carArrayController dans IB. Des idées? –

+0

Vous pouvez réellement taper le prédicat dans le champ de prédicat de filtre dans IB (avec le contrôleur de matrice sélectionné) ou appelez -setFilterPredicate: dans le code. Je pense que le keypath du modèle "@ sum.mileage" (dans la liaison de votre champ de texte) devrait suffire, mais ne me citez pas.Pour l'élégance, il est préférable de gérer vos attentes concernant ce que les fixations feront automatiquement pour vous ... Les besoins moins que parfaitement simples exigent des solutions moins-que-parfaitement-simples.Les liens ne vont que jusqu'ici pour soulager cela. Désolé :-) –

-1

Ne pas faire beaucoup de contrôleurs.

+0

Des idées sur la façon de faire cela? Je ne peux pas le comprendre :( –

+0

Comment est-ce mieux que d'instancier simplement deux contrôleurs de tableau et de définir leurs prédicats de filtre respectifs? –

+0

Avoir beaucoup de contrôleurs par entité se sent mal, juste mon avis – Vojto