Question

Dans mon modèle d'objet géré Core Data, j'ai une entité Foo avec une relation à plusieurs (avec un inverse à plusieurs) avec l'entité Baz nommée baz. Baz a une propriété de chaîne nommée "balise". Lorsque j'utilise [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths: [NSArray arrayWithObject: @ " baz.tag &] inEntityDescription: FooDescription] pour créer les éditeurs de lignes pour un NSPredicateEditor, le résultat contient une trame, comme prévu

[Popup: baz.tag] [Popup: Contient | est | n'est pas | ...] [Zone de texte]

Lorsque je sélectionne & Contient " dans la fenêtre contextuelle, une requête avec le prédicat fonctionne comme prévu. Si je choisis l'une des autres fenêtres contextuelles (par exemple, "est"), j'obtiens le message d'erreur suivant: "clé non cumulative non autorisée ici". Puis-je utiliser [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths: inEntityDescription:] ou dois-je créer l'éditeur de ligne manuellement?

Était-ce utile?

La solution

Il semble que le modèle généré automatiquement (avec [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths: inEntityDescription:] ) ne puisse pas générer les opérateurs appropriés. La solution consiste à créer le modèle manuellement à l'aide de [NSPredicateEditorRowTemplate initWithLeftExpressions: rightExpressionAttributeType: modificateur: opérateurs: options:] . Pour l'exemple donné:

id template = [[NSPredicateEditorRowTemplate initWithLeftExpressions:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"baz.tag"]] rightExpressionAttributeType:NSStringAttributeType modifier:NSAnyPredicateModifier operators:keywordOperators options:0];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top