Pergunta

No meu modelo de objeto gerenciado por dados, tenho uma entidade Foo com um relacionamento para muitos (com um inverso para muitos) para a entidade Baz chamada Baz. O BAZ tem uma propriedade de string chamada "Tag". Quando eu uso [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:[NSArray arrayWithObject:@"baz.tag"] inEntityDescription:FooDescription] Para criar os editores da linha para um nspredicateEditor, o resultado contém (como esperado) um modelo de linha como

Pop -up: baz.tag] [pop -up: contém | is | não | ...] [Textfield

Quando eu seleciono "contém" no pop -up, uma consulta com o predicado funciona conforme o esperado. Se eu escolher algum dos outros pop-ups (por exemplo, "é"), recebo o seguinte erro: "To-muitos não permitida aqui". Eu posso usar [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:] Ou tenho que construir o editor de filas manualmente?

Foi útil?

Solução

Parece o modelo gerado automaticamente (usando [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]) não pode produzir os operadores corretos. A solução é criar o modelo usando manualmente [NSPredicateEditorRowTemplate initWithLeftExpressions:rightExpressionAttributeType:modifier:operators:options:]. Para o exemplo dado:

id template = [[NSPredicateEditorRowTemplate initWithLeftExpressions:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"baz.tag"]] rightExpressionAttributeType:NSStringAttributeType modifier:NSAnyPredicateModifier operators:keywordOperators options:0];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top