我有两个实体:
跟踪:
创建日期
位置:
高度
...(“位置”中还有7个属性)
Track具有一个属性“ createdDate”,且具有“一对多位置”。
我需要重新选择Track.createdDate ==“ whatever-date-i-want”的所有位置
(在SQL中,这是一个联接,很容易做到。)
在这里我不确定该怎么办...
Location实体没有'createdDate'属性,因为我相信foreignKeys由CoreData本身处理。如果我查看sqlite文件,数据运行得非常好,我可以看到每条轨道的一堆位置(因为GPS将其插入CD)
我猜这是做谓语的一种特殊方法。我尝试以下行无济于事:
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(Track.createdDate == %@)", currentTrack.createdDate];
但这没用。我也尝试过像这样放置一个属性:
@property (nonatomic,retain) Track *lookupTrack;
并尝试:
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(lookupTrack.createdDate == %@)", currentTrack.createdDate];
也无济于事...想法?谢谢
编辑:
刚才我尝试:
NSPredicate * predicate = [NSPredicate predicateWithFormat:@“(任何track.createdDate ==%@)”,currentTrack.createdDate];
这给了我错误“在实体中找不到keypath createdDate”
和
NSPredicate * predicate = [NSPredicate predicateWithFormat:@“(ALL track.createdDate ==%@)”,currentTrack.createdDate];
这给了我错误“不支持的谓词(空)”
编辑:
这是一些截图
最佳答案
您必须在界面的“位置”到“跟踪”之间定义“逆关系”
核心数据模型检查器。
从“位置”到“轨道”定义一对一关系,将其称为“轨道”。
将“跟踪”定义为与“跟踪”中的多对多关系成反比关系
到“位置”。
那么谓词就是
[NSPredicate predicateWithFormat: @"track.createdDate == %@", currentTrack.createdDate]
关于ios - 如何根据一个实体与另一个实体的关系来获取它们?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19327738/