首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >筛选没有亲缘关系核心数据的子代

筛选没有亲缘关系核心数据的子代
EN

Stack Overflow用户
提问于 2014-12-26 13:34:39
回答 1查看 229关注 0票数 0

我试图在coredata中过滤关系的子元素,但问题是Coredata是由父级过滤的,这是正确的,但它并没有过滤子类。

模型

代码语言:javascript
运行
复制
Volumen <-->> MusicScore

我要过滤沃尔门的乐谱行。

我的NSPredicate是:

代码语言:javascript
运行
复制
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(relation_music_score, $musicscore, ANY $musicscore.nameMusicScore CONTAINS[cd] %@).@count > 0", searchStr];

self.collectionVolumen = [BOIVolumen MR_findAllWithPredicate:predicate];

CoreData给我所有的卷,其中包含音乐乐谱的名称搜索,但我想所有的伏鲁门,只有音乐乐谱搜索,而不是所有的音乐乐谱。

示例

代码语言:javascript
运行
复制
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"

当我用名字“两”搜索乐谱时,我想要这个结果:

代码语言:javascript
运行
复制
Volumens
  name = "One",
  etc..
  relation_music_score = NSOrderedSet

Music Score (2)
  name = "two"

NSPredicate把我抓到:

代码语言:javascript
运行
复制
Volumens
  name = "One",
  etc..
  relation_music_score = NSOrderedSet

Music Score (1)
  name = "One"

Music Score (2)
  name = "two"

编辑

我正在尝试筛选这个谓词和代码之间的关系:

代码语言:javascript
运行
复制
  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;
    }

我总是得到这个错误,在左手边,对于一个所有的操作符,或者任何一个操作符,都必须是NSArray或者NSSet。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-26 16:03:43

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27657885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档