如何使用NSFetchRequest获取特定值

时间:2012-08-08 11:48:26

标签: ios nsmanagedobject

我需要获取值为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的一个实体值。

1 个答案:

答案 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一起使用。