如何使用NSFetchRequest获取特定值
问题描述:
我需要获取值为xxx的特定托管实体。如何使用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;
}
我需要获取只有一个实体,其中名为“XXX”。 (只有一个实体,其中名称是xxx) 我还需要获取所有实体的类别为1.
我该如何使用NSFetchRequest执行此操作。我知道如何使用NSFetchedResultsController获取实体的所有实体值,但我只想获取名称为xxx的一个实体值。
答
假设你有一个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
一起使用。
非常感谢您的宝贵意见。 – Anand 2012-08-09 10:50:32