核心数据-有关多对多关系属性的信息

艾尔

我是Core Data的新手,我构建了一种音乐库应用,该应用具有两个标签:“
歌曲艺术家”标签,其中显示了一个艺术家列表,其中列出了每个艺术家的总歌曲数和总歌曲时长(每个艺术家行也是如此)

我的核心数据对象:

Song
=====
name
duration
album

artist (to one relationship)


Artist
======
name

songs (to many relationship)

因此,现在我可以显示一个艺术家列表,并且每个艺术家的歌曲总数为:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // i know i should reuse the cells..
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];

    Artist *artist = [self.fetchedResultsController objectAtIndexPath:indexPath];

    cell.textLabel.text = [NSString stringWithFormat:@"%@ %lu", artist.name, (unsigned long)artist.songs.allObjects.count];

    return cell;
}

我有两个问题:

  1. 这是为每位歌手获取总歌曲的正确方法吗?当我打电话时artist.songs.allObjects.count,核心数据会提取所有歌曲吗?因为我真的不需要歌曲对象。
  2. 就像我说的,我还需要每位歌手都有其所有歌曲的总播放时间,我该如何获得呢?(再次不加载所有歌曲对象)
蒙迪

首先,当您访问关系时,您不必担心Core Data在后台会做什么。特别是在获取结果的过程中,控制器Core Data将找到性能和内存占用的最佳组合。也许这就是关于拥有对象图而不是关系数据库的全部要点。

仍然最好跳过allObjects并简单地打电话

artists.songs.count

其次,对于持续时间计算,您可以利用所有托管对象都符合键值编码的事实。您可以像这样使用集体运算符:

NSNumber *totalDuration = [artist.songs valueForKeyPath:@"@sum.duration"];

同样,Core Data框架将确保您获得非常高效和高性能的代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

关系的核心数据属性?

来自分类Dev

带有NSPredicate的核心数据多对多关系filterContentForSearchText

来自分类Dev

有关关系属性的核心数据获取请求

来自分类Dev

与核心数据的关系故障

来自分类Dev

核心数据-关系查询

来自分类Dev

核心数据继承与关系

来自分类Dev

核心数据:与关系混淆

来自分类Dev

核心数据关系问题

来自分类Dev

NSPredicate核心数据对多

来自分类Dev

核心数据提取属性

来自分类Dev

核心数据与一对多关系

来自分类Dev

核心数据NSFetchedResultsController对多关系

来自分类Dev

核心数据NSFetchedResultsController对多关系

来自分类Dev

核心数据一对多关系

来自分类Dev

核心数据添加对象多对多关系

来自分类Dev

NSPredicate关于核心数据中的多对多关系

来自分类Dev

核心数据与中间表多对多关系(Swift 2)

来自分类Dev

Swift:多对多关系和mutableOrderedSetValueForKey的核心数据问题

来自分类Dev

核心数据多对多关系更新导致故障

来自分类Dev

多对多关系中的核心数据搜索

来自分类Dev

核心数据-多对多关系中对象的顺序

来自分类Dev

核心数据使用多对多关系保存记录?

来自分类Dev

核心数据(iOS)中与自我的多对多关系

来自分类Dev

核心数据:在多对多关系中获取相关对象

来自分类Dev

获取所有关系数据 - 核心数据

来自分类Dev

具有多关系的复杂核心数据谓词

来自分类Dev

如何仅将具有不同属性的对象添加到核心数据多对多关系NSSet

来自分类Dev

核心数据多对多谓词(再次)

来自分类Dev

核心数据中与自我的关系