0

我有两个实体: Track: createdDate

位置:高度 ...(“位置”中还有 7 个属性)

Track 有一个属性“createdDate”,它带有一个 To-Many to Location。

我需要选择 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: @"(ANY track.createdDate == %@)", currentTrack.createdDate];

这给了我错误'keypath createdDate not found in entity'

NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(ALL track.createdDate == %@)", currentTrack.createdDate];

这给了我错误“不支持的谓词(null)”

编辑:这里有一些截图 在此处输入图像描述

在此处输入图像描述

4

2 回答 2

1

您必须在 Core Data 模型检查器中定义从“位置”到“跟踪”的“反向关系” 。

  • 定义从“Location”到“Track”的一对一关系,称之为“track”。
  • 将“track”定义为从“Track”到“Location”的一对多关系的反比关系。

那么谓词将是

[NSPredicate predicateWithFormat: @"track.createdDate == %@", currentTrack.createdDate]
于 2013-10-11T21:54:31.953 回答
0

我道歉……这是我的类型……

我有

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"createdDate" ascending:NO];

它应该在哪里

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"track.createdDate" ascending:NO];
于 2013-10-12T03:41:07.920 回答