Domanda

Nel mio modello a oggetti gestiti Core Data, ho un'entità Foo con una relazione a molti (con un'inverso a molti) all'entità Baz di nome baz. Baz ha una proprietà stringa denominata " tag " ;. Quando uso [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths: [NSArray arrayWithObject: @ " baz.tag "] inEntityDescription: FooDescription] per creare gli editor di righe per un NSPredicateEditor, il risultato contiene (come previsto) una riga

[Popup: baz.tag] [Popup: Contiene | is | is | |]] [TextField]

Quando seleziono " Contiene " dal popup, una query con predicato funziona come previsto. Se scelgo uno qualsiasi degli altri popup (ad es. "È ""), visualizzo il seguente errore: "chiave a molti non consentita qui". Posso usare [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths: inEntityDescription:] o devo creare manualmente l'editor di righe?

È stato utile?

Soluzione

Sembra che il modello generato automaticamente (usando [NSPredicateRowEditorTemplate templateWithAttributeKeyPaths: inEntityDescription:] ) non sia in grado di produrre gli operatori corretti. La soluzione è creare manualmente il modello usando [NSPredicateEditorRowTemplate initWithLeftExpressions: rightExpressionAttributeType: modificatore: operatori: opzioni:] . Per l'esempio fornito:

id template = [[NSPredicateEditorRowTemplate initWithLeftExpressions:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"baz.tag"]] rightExpressionAttributeType:NSStringAttributeType modifier:NSAnyPredicateModifier operators:keywordOperators options:0];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top