Я пытаюсь написать метод, который пытается получить объект на основе предиката, используя переменную (как часть 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]];