Pergunta

Eu tenho um aplicativo usando o Core Data e ligações. Eu quero ter um NSSearchField que pode pesquisar através de um NSArrayController vinculado a um NSTableView. O controlador de matriz contém objetos centrais de dados que têm um campo "nome". Eu tenho a configuração do NSSearchField assim:

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

Isso funciona. Eu quero estendê-lo para que ele possa procurar para os campos de objetos relacionados aos do controlador de matriz. Cada objecto no controlador de matriz tem uma relação para-muitos a outro tipo de objecto chamado "tag", que tem um campo chamado "nome". Eu tentei o seguinte:

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

Este, porém, não funciona. Nada acontece na NSTableView quando o texto é introduzida no NSSearchField. O que está errado com ele?

Foi útil?

Solução

A ligação às tags como o modelo tentativas principais caminhos para ligar o predicado pesquisa de campo para os arrayController.filterPredicate.tags chave de caminho. Desde a propriedade filterPredicate do controlador de matriz não tem uma propriedade de marcas, provavelmente você está 'chave não encontrado' gettings exceções que estão sendo registrados em silêncio. Em vez disso, recordando que o filterPredicate de um NSArrayController é aplicada aos membros da matriz, você quer a ligação a ser criado algo como isto:

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

self.tags poderia ser escrito como apenas tags, mas acho que isso torna mais claro que as etiquetas é uma propriedade do objeto ao qual o predicado está sendo aplicada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top