Pregunta

En mi modelo de objeto gestionado de Core Data, tengo una entidad Foo con una relación de muchos a muchos (con un inverso de muchos a muchos) a la entidad Baz llamada baz. Baz tiene una propiedad de cadena llamada " tag " ;. Cuando uso [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths: [NSArray arrayWithObject: @ " baz.tag "] inEntityDescription: FooDescription] para crear los editores de fila para un NSPredicateEditor, el resultado contiene una plantilla de fila (como se esperaba)

[Ventana emergente: baz.tag] [Ventana emergente: Contiene | es | no es | ...] [TextField]

Cuando selecciono " Contiene " desde la ventana emergente, una consulta con el predicado funciona como se esperaba. Si elijo cualquiera de las otras ventanas emergentes (p. Ej., & Quot; es "), aparece el siguiente error: la clave '' to-many no está permitida aquí ''. ¿Puedo usar [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths: inEntityDescription:] o tengo que construir el editor de filas manualmente?

¿Fue útil?

Solución

Parece que la plantilla generada automáticamente (usando [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths: inEntityDescription:] ) no puede producir los operadores correctos. La solución es crear la plantilla manualmente usando [NSPredicateEditorRowTemplate initWithLeftExpressions: rightExpressionAttributeType: modificador: operadores: opciones:] . Para el ejemplo dado:

id template = [[NSPredicateEditorRowTemplate initWithLeftExpressions:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"baz.tag"]] rightExpressionAttributeType:NSStringAttributeType modifier:NSAnyPredicateModifier operators:keywordOperators options:0];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top