Dav*_*her 28 cocoa entity-relationship core-data objective-c
我有一个像这样的核心数据模型设置:
单个Blockbuster内部可以有多个DVD(To-Many).每张DVD只能是单个Blockbuster(To-One)的一部分.
有多个Blockbuster,有些可能包含与其他Blockbuster的DVD实体共享相同标题的DVD实体.例如,Blockbuster A可能有"变形金刚2"的副本,Blockbuster C和Blockbuster G也是如此.让我们假装没有Blockbuster拥有同一部电影的多个副本.
我有兴趣从Blockbuster C获取变形金刚2 DVD .我不想要Blockbuster A或G的副本,因为我的老板经常光顾那里,我只能在Blockbuster C中焚烧这片垃圾.
我的问题是,我该如何形成NSFetchRequest它抓起DVD与标题 "变形金刚2",这是一个孩子一鸣惊人 "C"父实体?
这种类型的请求将获取所有"Transformer 2"DVD,但不是特定于Blockbuster C实体的DVD:
NSManagedObjectContext *moc = [self managedObjectContext];
NSString *aTitle = @"Transformers 2";
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title == %@", aTitle];
[request setEntity:[NSEntityDescription entityForName:@"DVD" inManagedObjectContext:moc]];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];
// error handling code
[request release];
Run Code Online (Sandbox Code Playgroud)
有没有办法传递NSPredicate中相关对象的对象ID,基于此进行过滤?
Ale*_*lex 46
你可以在一个人中遍历关系NSPredicate.例如,你可以写类似的东西
[NSPredicate predicateWithFormat:@"title == %@ AND blockbuster.name LIKE \"Blockbuster C\"", @"Transformers 2"]
Run Code Online (Sandbox Code Playgroud)
现在,如果您没有要比较的属性,并且需要检查实际对象,那么您可以使用类似的东西
[NSPredicate predicateWithFormat:@"title == %@ AND blockbuster IN %@", @"Transformers 2", setOfBlockbusters]
Run Code Online (Sandbox Code Playgroud)
这里记录了完整的语法.但setOfBlockbusters可以是集合,数组或字典(如果它是字典,则使用值,而不是键).
| 归档时间: |
|
| 查看次数: |
36375 次 |
| 最近记录: |