ios - 过滤关系 Coredata 的子项而不是父项

标签 ios objective-c core-data nspredicate

我正在尝试过滤 coredata 中关系的子项,但问题是 Coredata 按父项过滤,这是正确的,但它没有过滤子项。

型号:

Volumen <-->> MusicScore

我想按音量过滤乐谱行。

我的 NSPredicate 是:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(relation_music_score, $musicscore, ANY $musicscore.nameMusicScore CONTAINS[cd] %@).@count > 0", searchStr];

self.collectionVolumen = [BOIVolumen MR_findAllWithPredicate:predicate];

CoreData 为我提供了所有包含搜索到的乐谱名称的卷,但我希望所有卷只搜索到乐谱而不是所有乐谱。

示例:

Volumens
  name = "One",
  etc..
  relation_music_score = NSOrderedSet

     Music Score (1)
       name = "One"

     Music Score (2)
       name = "two"

Volumens
  name = "Two",
  etc..
  relation_music_score = NSOrderedSet

     Music Score (3)
       name = "three"

     Music Score (4)
        name = "four"

当我搜索名称为“two”的乐谱时,我想要这样的结果:

Volumens
  name = "One",
  etc..
  relation_music_score = NSOrderedSet

Music Score (2)
  name = "two"

之前的 NSPredicate 让我明白了:

Volumens
  name = "One",
  etc..
  relation_music_score = NSOrderedSet

Music Score (1)
  name = "One"

Music Score (2)
  name = "two"

编辑:

我正在尝试过滤与此谓词和代码的关系:

  for (int i = 0; i < [self.collectionVolumen count]; i++) {
        BOIVolumen *volumen = [self.collectionVolumen objectAtIndex:i];
        NSOrderedSet *musicStore = [[self.collectionVolumen objectAtIndex:i] relation_music_score];

        NSPredicate *filterMusicScore = [NSPredicate predicateWithFormat:@"nameMusicScore CONTAINS[cd] %@", searchStr];
        NSOrderedSet *musicStoreTemporal = [musicStore filteredOrderedSetUsingPredicate:filterMusicScore];

        volumen.relation_music_score = musicStoreTemporal;
    }

而且我总是收到此错误ALL 或 ANY 运算符的左侧必须是 NSArray 或 NSSet。我一直在寻找,但什么也没找到。

最佳答案

您的谓词虽然过于复杂,但仍然有效。您正在正确选择 Volumen 实体。找到的实例当然还有所有可用的关系,所以你有两个选择:

  • 您可以再次过滤关系,例如使用 filteredSetUsingPredicate:,
  • 或者您首先获取 MusicScore 实体而不是 Volumen 实体。

我认为第二个选项是你想要的。

关于ios - 过滤关系 Coredata 的子项而不是父项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27657885/

相关文章:

iphone - 为什么开始搜索时我的搜索 TableView 没有出现?

ios - UITextview 嵌入 UIScrollView 时的键盘处理

ios - 如何在弹出/推送传输中为一个导航栏呈现两种不同的 barTintColor

ios - 在设备方向更改时在 UiView 中居中 UIActivityIndi​​catorView

具有交叉点的 iOS UICollectionViewCells 布局

ios - 核心数据 : Add relation object to existing object

ios - 检查函数在 Swift 中是否可用?

iphone - 调用另一个 UIViewController

iphone - 自定义部分名称导致 NSFetchedResultsController 崩溃

iphone - 将 NSDate 保存到 CoreData 上下文时出现问题