对核心数据中实体之间的属性执行计算



我是新来的xcode/ios等…而且在解决问题上有点困难。我似乎无法弄清楚我将如何检索和执行核心数据实体之间的属性计算。下面是我正在尝试做的一个例子:

我的项目是一个足球应用程序,有一对多的关系。Season to Game (Season有很多游戏。赛季有像球队名和日期开始这样的属性。游戏具有传球码、跑动码等属性。

我如何才能计算出整个赛季的总传球码(将该赛季的所有比赛传球码加在一起)?

谢谢你的时间。

的管理对象Season有一个名为hasGames的关系(或者你为游戏命名的任何关系)。当你有一个赛季管理对象时,你可以访问hasGames关系(这是一个NSSet),循环其中的所有游戏并对数据做任何你想做的事情,例如添加一些值。

编辑:

的例子:

如果我把你的关系职业->赛季->比赛,假设这些关系被称为职业。有季节和季节。hasGames,它看起来像这样

int passingYards = 0;
Career* myCareer = [... fetchedresult for the career you are looking for ...];
for(Season* season in myCareer.hasSeasons)
{
  for(Game* game in season.hasGames)
  {
    careerPassingYards += [game.passingYards intValue];
  }
}

我最终在堆栈中找到了这段代码。在正确设置我的fetchedResultsController后,我可以在按钮或任何需要的地方使用此代码来计算我的赛季中所有游戏的总传球码。

int totalpassingyards = 0;
for (NSManagedObject *object in [self.fetchedResultsController fetchedObjects]) {
    NSNumber *objectTotalPassingYardsNumber = [object valueForKey:@"passingyards"];
    int objectTotalPassingYards = [objectTotalPassingYardsNumber intValue];      
    totalpassingyards = totalpassingyards + objectTotalPassingYards;
}
NSLog(@"Subtotal: %i", totalpassingyards);

我的下一步是弄清楚如何计算我职业生涯列表中所有赛季的总传球码。下面是我的coredata关系是如何建立的。

Career          >       Season      >       Game
(career stats)          (season stats)      (game stats)
career stats = sum of season stats
season stats = sum of game stats
game stats = that individual games stats

我猜这将包括创建两个fetchedResultsControllers一个持有游戏和一个持有季节,然后做某种类型的嵌套循环来通过所有这些。我会及时通知大家的。

如果有人有更好的方法来做到这一点,让我知道,就像我说的,我是非常新的,所以一切都归结为跟踪和错误,虽然它可能工作,我明白这可能不是最好的方法来做到这一点,哈哈。

最新更新