> Blockbuster实体
>与DVD实体的To-Many关系。
> DVD实体
> Title attribute(string)
>与父块重放实体的一对一关系
一个大片可以有多个DVD里面(To-Many)。每个DVD只能是一个Blockbuster(To-One)的一部分。
有多个Blockbuster的,并且一些可以包含与其他Blockbuster的DVD实体共享相同标题的DVD实体。例如,Blockbuster A可能有一个“transformers 2”的副本,Blockbuster C和Blockbuster G的副本。让我们假设没有Blockbuster有同一标题电影的多个副本。
我有兴趣从Blockbuster C中抓取transformers 2 DVD。我不想要的Blockbuster A或G的副本,因为我的老板常常在那里,我只能在燃烧这块垃圾在Blockbuster C。
我的问题是,我如何形成一个NSFetchRequest抓住一个DVD的标题“变形金刚2”,它是Blockbuster“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];
有没有办法传递,说,相关对象的对象ID在nspredicate里面,基于过滤?
解决方法 您可以遍历nspredicate中的关系。例如,你可以写类似的东西[nspredicate predicateWithFormat:@"Title == %@ AND blockbuster.name liKE \"Blockbuster C\"",@"transformers 2"]
现在,如果你没有一个属性来比较,你需要检查实际的对象,那么你可以使用像
[nspredicate predicateWithFormat:@"Title == %@ AND blockbuster IN %@",@"transformers 2",setofBlockbusters]
完整的语法记录在here.但是setofBlockbusters可以是一个集合,一个数组或一个字典(如果它是一个字典,值,而不是键)。
总结以上是内存溢出为你收集整理的objective-c – 如何创建一个基于属性和关系过滤Core数据对象的NSFetchRequest?全部内容,希望文章能够帮你解决objective-c – 如何创建一个基于属性和关系过滤Core数据对象的NSFetchRequest?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)