代码之家  ›  专栏  ›  技术社区  ›  Beau D'Amore

如何根据一个实体与另一个实体的关系从其中提取行?

  •  0
  • Beau D'Amore  · 技术社区  · 11 年前

    我有两个实体: 轨道: 创建日期

    地点: 海拔高度 …(“位置”中还有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*predice=[NSPredicate predicate WithFormat:@“(ANY track.createdDate==%@)”,currentTrack.createdDate];

    这给了我错误“在实体中找不到keypath createdDate”

    以及

    NSPredicate*predice=[NSPredicate predicate WithFormat:@“(ALL track.createdDate==%@)”,currentTrack.createdDate];

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

    编辑: 这是一些屏幕截图 enter image description here

    enter image description here

    2 回复  |  直到 11 年前
        1
  •  1
  •   Martin R    11 年前

    您必须定义 “反向关系” 从“位置”到“轨迹” 核心数据模型检查器。

    • 定义从“位置”到“轨迹”的一对一关系,称之为“轨迹”。
    • 将“轨迹”定义为与“轨迹”的多对多关系相反的关系 至“位置”。

    那么谓词将是

    [NSPredicate predicateWithFormat: @"track.createdDate == %@", currentTrack.createdDate]
    
        2
  •  0
  •   Beau D'Amore    11 年前

    我道歉。。。这是我的同类。。。

    我曾经

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

    它应该在哪里

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