Frage

In meinem Kerndaten-Objektmodell habe ich ein Entität mit einer to-vielen-Beziehung (mit einem umgekehrten Inverse) zu Entity Baz namens Baz. BAZ hat eine String -Eigenschaft mit dem Namen "Tag". Wenn ich benutze [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:[NSArray arrayWithObject:@"baz.tag"] inEntityDescription:FooDescription] Um die Zeileneditoren für einen NSpredicateEditor zu erstellen, enthält das Ergebnis (wie erwartet) eine Zeilenvorlage wie

Popup: Baz.tag] [Popup: enthält | is | is nicht | ...] [Textfield

Wenn ich aus dem Popup "enthält" aus wähle, funktioniert eine Abfrage mit dem Prädikat wie erwartet. Wenn ich eines der anderen Popups auswähle (z. B. "IS"), bekomme ich den folgenden Fehler: "TO-Many Key, das hier nicht erlaubt ist". Kann ich benutzen [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:] Oder muss ich den Zeileneditor manuell erstellen?

War es hilfreich?

Lösung

Es sieht aus wie die automatisch generierte Vorlage (verwendet [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]) kann nicht die richtigen Operatoren produzieren. Die Lösung besteht darin, die Vorlage manuell verwendet zu erstellen [NSPredicateEditorRowTemplate initWithLeftExpressions:rightExpressionAttributeType:modifier:operators:options:]. Für das gegebene Beispiel:

id template = [[NSPredicateEditorRowTemplate initWithLeftExpressions:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"baz.tag"]] rightExpressionAttributeType:NSStringAttributeType modifier:NSAnyPredicateModifier operators:keywordOperators options:0];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top