0

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

4

1 回答 1

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。如果谓词只匹配一项,则只有一个结果,如果不匹配,则数组将被初始化,但其count属性将为 0。您可以查看NSPredicate 类参考以及如何将其与CoreData.

于 2012-08-08T11:55:45.180 回答