NSFetchRequest Возвращает объект при первом его запуске, но не при последующих - PullRequest
2 голосов
/ 03 ноября 2011

У меня есть набор объектов, и для каждого объекта в этом наборе я вызываю метод, в котором есть NSFetchRequest.Этот NSFetchRequest используется для извлечения объекта на основе идентификатора, который передается в метод.Для каждого из моих объектов я вызываю этот метод, если это первый раз, когда идентификатор используется в предикате NSFetchRequest, он возвращает правильный объект, каждый раз после этого, если этот идентификатор используется снова, он возвращает nil.Я очень смущен этим и не могу найти ничего о том, почему это происходит или что я делаю неправильно.Любая помощь будет принята с благодарностью.

Вот код для моего NSFetchRequest:

NSFetchRequest *request = [[NSFetchRequest alloc] init];

[request setEntity:[NSEntityDescription entityForName:@"Styles" inManagedObjectContext:[self managedObjectContext]]];

[request setPredicate:[NSPredicate predicateWithFormat:@"style_id == %@", style_id]];

NSError *error = nil;

Styles *r_styles = [[[self managedObjectContext] executeFetchRequest:request error:&error] lastObject];

[request release]; 

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Я разобрался в своей проблеме. Я передавал свой идентификатор как NSString, когда я должен был передать его как NSNumber. Изменение его на NSNumber решило мою проблему.

1 голос
/ 04 ноября 2011

Ваше выполнение извлечения имеет два источника ноля.executeFretchRequest вернет ноль, если произойдет ошибка.lastObject вернет ноль, если массив пуст.

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

...