Frage

Ich habe eine Anwendung mit Core Data und Bindungen. Ich möchte eine NSSearchField haben, die durch eine NSArrayController gebunden an einen NSTableView suchen. Der Array-Controller enthält Core Data-Objekte, die einen „Namen“ Feld haben. Ich habe Setup die NSSearchField wie folgt aus:

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

Das funktioniert. Ich mag es so erweitern, dass sie auf die Felder von Objekten suchen können, um die in den Array-Controller zusammen. Jedes Objekt in dem Array-Controller verfügt über eine n-Beziehung zu einer anderen Art von Objekt namens „tag“, die ein Feld „name“ genannt hat. Ich habe versucht, die folgenden:

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

Dies ist jedoch nicht funktioniert. Nichts geschieht im NSTableView wenn die Texteingabe in das NSSearchField ist. Was mit ihm falsch ist?

War es hilfreich?

Lösung

Die Bindung an tags als das Modell Schlüsselpfad versucht, das Suchfeld eines Prädikat zu dem Schlüsselpfad arrayController.filterPredicate.tags zu binden. Da die filterPredicate Eigenschaft der Array-Controller keine Tags Eigenschaft hat, sind Sie wahrscheinlich ‚Schlüssel nicht gefunden‘ gettings Ausnahmen, die leise protokollieren. Stattdessen erinnert, dass die filterPredicate eines NSArrayController an die Mitglieder des Arrays angewendet wird, möchten Sie die Bindung so etwas wie dieses aufgebaut werden:

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

self.tags als nur tags geschrieben werden könnte, aber ich denke, das macht deutlicher, dass Tags eine Eigenschaft des Objekts ist, auf die das Prädikat angewandt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top