【问题标题】:Core Data- NSPredicate and to-many relationship核心数据- NSPredicate 和多对多关系
【发布时间】:2012-03-08 09:50:38
【问题描述】:

我在游戏和玩家之间建立了一对多的关系。游戏与玩家之间存在一种称为玩家的关系。

游戏 > 玩家

Games 实体有一个称为玩家的关系。 玩家有一个名为“订单”的属性

我无法使用谓词来查询关系。这是我正在使用的代码:

    -(NSArray *)returnPlayerLastAtBat: (int)rosterNo
    {
        NSError *error;

        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription 
                                       entityForName:@"Games" inManagedObjectContext:managedObjectContext];
        NSPredicate *predicate = [NSPredicate predicateWithFormat:
                                  @"(finished = '%d') and (players.order = '%d')",0,rosterNo];
        [fetchRequest setEntity:entity];
        [fetchRequest setPredicate:predicate];

        NSArray* result = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
        [fetchRequest release];

return result;
}

不知道我做错了什么——我可以在整个项目中使用谓词——但是这个已经卡住了。

【问题讨论】:

  • 我认为你不需要谓词格式的引号。不确定它是否会破坏谓词,但值得一试。
  • 仅供参考,表名按惯例是单数(即游戏和玩家)
  • 引号是为了美观——它们不会影响代码。

标签: objective-c nspredicate one-to-many relationships


【解决方案1】:

看看this SO question。正如 mvds 所提到的,删除 %d 周围的引号。

【讨论】:

  • 谢谢,马蒂厄。这段代码对我有用: NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(finished = '%d') and (ANY player.order = '%d')",0,rosterNo];
猜你喜欢
  • 2011-02-18
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 2014-01-16
相关资源
最近更新 更多