Автоматически сгенерированные шаблоны строк предикатов для ключа to-many?

StackOverflow https://stackoverflow.com/questions/210735

Вопрос

В моей объектной модели, управляемой основными данными, у меня есть объект Foo с отношением "ко многим" (с обратным отношением "ко многим") к объекту Baz с именем baz .У Baz есть строковое свойство с именем "tag".Когда я использую [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:[NSArray arrayWithObject:@"baz.tag"] inEntityDescription:FooDescription] чтобы создать редакторы строк для NSPredicateEditor, результат содержит (как и ожидалось) шаблон строки типа

[Всплывающее окно:baz.tag] [Всплывающее окно:Содержит |является|не является|...] [Текстовое поле]

Когда я выбираю "Содержит" во всплывающем окне, запрос с предикатом работает так, как ожидалось.Если я выберу любое из других всплывающих окон (например"is"), я получаю следующую ошибку:"ключ "ко многим" здесь не разрешен".Могу ли я использовать [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:] или мне нужно создать редактор строк вручную?

Это было полезно?

Решение

Это выглядит как автоматически сгенерированный шаблон (с использованием [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]) не удается создать правильные операторы.Решение состоит в том, чтобы создать шаблон вручную, используя [NSPredicateEditorRowTemplate initWithLeftExpressions:rightExpressionAttributeType:modifier:operators:options:].Для приведенного примера:

id template = [[NSPredicateEditorRowTemplate initWithLeftExpressions:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"baz.tag"]] rightExpressionAttributeType:NSStringAttributeType modifier:NSAnyPredicateModifier operators:keywordOperators options:0];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top