Я пытаюсь создать шаблоны редактора предикатов для объектов Core Data. В моем коде у меня есть следующий:NSPredicateEditorRowTemplate и CoreData
NSEntityDescription *descrip = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:managedObjectContext];
NSArray *templates = [NSPredicateEditorRowTemplate templatesWithAttributeKeyPaths:[NSArray arrayWithObjects:@"name", @"age", nil] inEntityDescription:descrip];
[ibPredicateEditor setRowTemplates: templates];
NSPredicate *p = [NSPredicate predicateWithFormat:@"name like 'John'"];
[ibPredicateEditor setObjectValue:p];
Печати из содержимого массива шаблонов дает мне следующее:
CFArray 0x1002d7400 [0x7fff70ff5f20] {типа = неизменному, COUNT = 2, значение = ( 0: NSPredicateEditorRowTemplate 0x10025c090: [имя] [99, 4, 5, 8, 9] NSStringAttributeType 1: NSPredicateEditorRowTemplate 0x1002d2dc0: [возраст] [4, 5, 0, 2, 1, 3] NSInteger16AttributeType )}
При выполнении этого кода я получаю следующее на консоли:
Warning - unable to find template matching predicate name LIKE "John"
Интерфейс для этого выглядит очень прямо вперед, так что я не могу понять, что я я делаю неправильно. Любая помощь будет принята с благодарностью!
EDIT
Мой первоначальный вопрос в том, что я использовал LIKE оператора, когда мои шаблоны не поддерживают его. Однако я смущен тем, почему я получаю подобное предупреждение при передаче сложного предиката в редактор.
NSPredicate *p = [NSPredicate predicateWithFormat:@"name CONTAINS 'John'"];
NSPredicate *p2 = [NSPredicate predicateWithFormat:@"name CONTAINS 'Jo'"];
NSPredicate *final = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:p, p2, nil]];
[ibPredicateEditor setObjectValue: final];
ИЛИ
NSPredicate *final = [NSCompoundPredicate orPredicateWithSubpredicates:[NSArray arrayWithObjects:p, p2, nil]];
[ibPredicateEditor setObjectValue: final];
Оба они производят подобные предупреждения как мой первоначальный вопрос. Тем не менее, мне показалось странным, что я могу использовать один предикат и строить состав и предикат, но я не могу передать готовое соединение и предикат в редактор.
Эшли, спасибо за подробное разъяснение. – Carmen