这是我的关系模式。轮< --->>空穴。 圆形可以有很多孔,孔只能有一个圆形。
我想从特定回合中抓取一个Hole对象。本质上,我试图抓住一个具有等于'1'的属性的Hole对象。这是我的代码。
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext
let frequest = NSFetchRequest(entityName: "Round")
var titleHoleNumEHVC:NSString = "1"
frequest.predicate = NSPredicate(format: "ANY roundToHole.holeNum = %@", titleHoleNumEHVC)
let myArray = context.executeFetchRequest(frequest, error: nil)
问题在于我的谓词。由于某种原因,谓词返回所有HOLES而不仅仅是具有属性值holeNum = 1的HOLE。
我在这里遗漏了什么吗?我只想抓住单个HOLE对象,其中holeNum属性等于'1'。
答案 0 :(得分:0)
你的NSFetchRequest frequest
应该关注“洞”,而不是“回合”:
let frequest = NSFetchRequest(entityName: "Hole")
然后,您有两种可能的谓词方式。
您可以根据Round的某些属性设置谓词:
frequest.predicate = NSPredicate(format: "holeNum == %@ && holeToRound.someRoundEntityProperty == %@", argumentArray:[titleHoleNumEHVC, someRoundEntityPropertyValue])
...其中holeToRound是roundToHole的对立关系,而someRoundEntityProperty是Round的属性。
如果您已经知道与NSFetchRequest相关的Round managedObject,您可以像这样设置谓词:
frequest.predicate = NSPredicate(format: "holeNum = %@ && holeToRound == %@", argumentArray:[titleHoleNumEHVC, someRoundObject])
...其中someRoundObject是您关心的Round托管对象。