CoreData:获取具有给定属性和给定关系的对象?

Posted

技术标签:

【中文标题】CoreData:获取具有给定属性和给定关系的对象?【英文标题】:CoreData: Fetch an object that has a given property AND a given relationship? 【发布时间】:2012-05-20 21:53:13 【问题描述】:

我有一个看起来有点像这样的 CoreData 模型:

Object A:
  Results -- A one to many relationship to an indeterminate number of Object B's.

Object B:
  Object Name -- A string.  (potentially not unique)
  Parent -- A singular relationship with Object A.

如果我知道给定的对象 A 和我正在寻找的对象名称字符串,我正在努力编写一个将返回 ObjectB 的 NSPredicate。我尝试了以下方法,但总是收到此错误:

"'NSInvalidArgumentException',原因:'无法解析格式字符串..."

request.predicate = [NSPredicate predicateWithFormat:@"NameString == %@, SELF IN %@", NameString, ObjectA.results];

request.predicate = [NSPredicate predicateWithFormat:@"(NameString == %@) IN %@", NameString, ObjectA.results];

等等……

这似乎应该是一件简单而明显的事情,但我是 Core Data 的新手,很难找到一个展示这一点的示例。

谢谢!

【问题讨论】:

【参考方案1】:

你需要使用 %K。

你的谓词中可能需要这样的东西

 NSString enitity=@"ObjectA";
 NSString attribute=@"results";
 request.predicate = [NSPredicate predicateWithFormat:@"NameString == %@, SELF IN %K.%K", NameString, enitity,attributes];

Look here.

【讨论】:

以上是关于CoreData:获取具有给定属性和给定关系的对象?的主要内容,如果未能解决你的问题,请参考以下文章

CoreData, NSManagedObject 获取或创建(如果不存在)

CoreData 在一对多关系中编辑一个属性

NSPredicate 用于在中间选择给定对象

NSFetchRequest 获取具有下一个最接近字符串属性的对象

核心数据:谓词中的对象

给定分层路径,获取字段的值