Использование переменной для имени элемента в предикате основных данных

Я пытаюсь написать метод, который пытается получить объект на основе предиката с использованием переменной (как часть NSXMLParser).Код выглядит так:

У меня есть эти переменные, определенные в классе:

@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;

@property (strong, nonatomic) NSString *model;
@property (strong, nonatomic) NSString *element;

Теперь в методе я настроил запрос следующим образом:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:self.model inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];

Теперь проблема - что я хочу уметь делать это:

// DOES NOT WORK
[request setPredicate:[NSPredicate predicateWithFormat:@"%@ == %@", self.element,string]];

Но это не дает никаких результатов. Поработав немного, я заметил, что это действительно работает:

 if ( [self.element isEqualToString:@"name"] ) {
     [request setPredicate:[NSPredicate predicateWithFormat:@"name == %@", string]];
 }

Это говорит мне, что мой self.element установлен правильно (я думаю?), Но что предикат не как будто левая часть выражения является переменной.

Я также пробовал:

[request setPredicate:[NSPredicate predicateWithFormat:@"%s == %@", [self.element UTF8String],string]];

... просто посмотреть, не предпочитает ли он строку. Я тоже не мог заставить это работать.

Возможно ли то, что я пытаюсь сделать? Я прочитал все, что мог, из документации Core Data, и я не могу найти образец кода, который делает это таким образом, но я также не нашел ничего, чтобы сказать, что это невозможно.

РЕДАКТИРОВАТЬ: а теперь рабочий код:

[request setPredicate:[NSPredicate predicateWithFormat:@"%K == %@", self.element,string]];
8
задан Björn Kaiser 13 February 2012 в 16:30
поделиться