Как получить определенное значение с помощью NSFetchRequest
Мне нужно получить конкретный управляемый объект, где значение ххх.
мой управляемый объект
Subscriptions : NSManagedObject{
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * id;
@property (nonatomic, retain) NSNumber * category;
@property (nonatomic, retain) NSNumber * frequency;
@property (nonatomic, retain) NSNumber * alertType;
}
Мне нужно выбрать только те объекты, имя которых "ххх". (Будет только один объект, имя которого - ххх.) Мне также нужно выбрать все объекты, где категория - 1.
Как я могу сделать это с помощью NSFetchRequest. Я знаю, как использовать NSFetchedResultsController для извлечения всех значений сущности для сущности, но я хочу выбрать только одно, где имя - ххх.
1 ответ
Предположим, у вас есть NSManagedObjectContext *context
, затем:
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; //Note don't use autorelease if you're using ARC
request.entity = [NSEntityDescription entityForName:@"Subscriptions" inManagedObjectContext:context];
NSString *someName = @"xxx";
request.predicate = [NSPredicate predicateWithFormat:@"name ==[c] %@", someName]; //[c] means case insensitive
NSArray *result = [context executeFetchRequest:request error:nil];
Массив результатов будет содержать все возвращаемые результаты и будет иметь тип Subscriptions
, Если предикат соответствует только одному элементу, будет только один результат, если не соответствует ни одному, массив будет инициализирован, но его count
свойство будет равно 0. Вы можете взглянуть на NSPredicate Class Reference и на то, как вы используете его с CoreData
,