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」であるエンティティを1つだけフェッチする必要があります。(名前がxxxのエンティティは1つだけです。)また、categoryが1のすべてのエンティティをフェッチする必要があります。

NSFetchRequestを使用してこれを行うにはどうすればよいですか。NSFetchedResultsControllerを使用してエンティティのすべてのエンティティ値をフェッチする方法を知っていますが、名前がxxxの1つだけをフェッチしたいと思います。

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です。述語が1つの項目のみに一致する場合、結果は1つのみになります。一致しない場合、配列は初期化されますが、そのcountプロパティは0になります。NSPredicateクラスリファレンスと、での使用方法を確認できますCoreData

于 2012-08-08T11:55:45.180 に答える