核心数据:对多对多关系的谓词

Jon*_*rez 6 iphone core-data objective-c

我有一个包含4个实体的CoreData模型.

模特截图 - > http://img96.imageshack.us/img96/7857/screenshot20100209at182.png

-StateName

地点:

-locationName(属性)

-locationDescription

-locationActivities(relatinship)

- 状态(关系)

LocationActivities:

- 位置(关系)

- 活动(关系)

活动

-activityName(属性)

-locationsActivities(关系)

如何编写一个选择所有具有的位置的查询

(activity ='Golf'OR activity ='Swimming')AND state ='LA'

Tim*_*Tim 5

// With some NSManagedObjectContext *moc
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:[NSEntityDescription entityForName:@"Location"
                               inManagedObjectContext:moc]];
[request setPredicate:[NSPredicate predicateWithFormat:
                       @"(locationActivities.activity.activityName == %@ OR 
                          locationActivities.activity.activityName == %@) AND 
                         state.stateName == %@",
                       @"Golf", @"Swimming", @"LA"]];
NSError *error;
NSArray *results = [moc executeFetchRequest:request error:&error];
Run Code Online (Sandbox Code Playgroud)

基本上,正常进行核心数据提取,然后构建适当的谓词来过滤结果(如谓词编程指南中所述).