Question

J'ai une application à l'aide de base de données et liaisons. Je veux avoir un NSSearchField qui peut chercher dans un NSArrayController lié à un NSTableView. Le contrôleur RAID contient des objets de base de données qui ont un champ « nom ». J'ai installé le NSSearchField comme ceci:

Bind To: the array controller
Controller Key: filterPredicate
Predicate Format: name contains[c] $value

Cela fonctionne. Je veux l'étendre afin qu'il puisse rechercher dans les champs d'objets liés à ceux du contrôleur RAID. Chaque objet dans le contrôleur de réseau a à plusieurs rapports à un autre type d'objet appelé « tag » qui a un champ appelé « nom ». J'ai essayé ce qui suit:

Bind To: the array controller
Controller Key: filterPredicate
Model Key Path: tags
Predicate Format: name contains[c] $value

Cela ne fonctionne pas. Rien ne se passe dans le NSTableView lorsque le texte est entré dans le NSSearchField. Qu'est-ce qui ne va pas avec elle?

Était-ce utile?

La solution

La liaison à le modèle tags chemin de clé tente de lier le champ de recherche principale à la clé chemin arrayController.filterPredicate.tags. Étant donné que la propriété filterPredicate du contrôleur RAID n'a pas de propriété balises, vous êtes probablement de clé introuvable »Gettings exceptions qui sont connectés en silence. Au lieu de cela, rappelant que le filterPredicate d'un NSArrayController est appliqué aux membres du tableau, vous voulez que la liaison à mettre en place quelque chose comme ceci:

Bind To: <array controller>
Controller Key: filterPredicate
Predicate Format: ANY self.tags contains[c] $value

self.tags pourrait être écrit comme juste <=>, mais je pense que cela rend plus clair que les balises est une propriété de l'objet auquel le prédicat est appliqué.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top