我需要获取值为xxx的特定管理实体。
我的托管对象是
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的一个实体值。
答案 0 :(得分:0)
假设你有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
。如果谓词只匹配一个项目,则只有一个结果,如果匹配none,则数组将被初始化,但其count
属性将为0.您可以查看NSPredicate Class Reference以及如何与CoreData
一起使用。