我有两个实体:
跟踪:
     创建日期

位置:
     高度
     ...(“位置”中还有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/

10-13 08:37