【问题标题】:NSPredicate with relationNSPredicate 与关系
【发布时间】:2015-02-01 20:40:54
【问题描述】:

我在使用给定谓词获取所有核心数据实体时遇到问题。我的模型看起来像这样。 PlayerWeapon 具有一对多关系,PlayerMetadata 具有一对一关系

我想列出属于 Player 的所有 Weapons,该 selected 属性的 Metadata 设置为 true。

我用这个谓词

[NSPredicate predicateWithFormat:@"ALL player.metadata.selected == %@", @YES];

但我得到了错误

The left hand side for an ALL or ANY operator must be either an NSArray or an NSSet.'

我做错了什么?

干杯, 一月

【问题讨论】:

    标签: core-data nspredicate


    【解决方案1】:

    您应该修改您的查询。 'ALL' 和 'ANY' 关键字应该与许多关系一起使用。从玩家到武器,你有一对多的关系。但是,如果你反转关系,你会看到关系是多对一的。所以,每把武器只有一个玩家。

    Player <---->> Weapon
    
    Weapon <<---> Player
    

    所以,如果你像这样改变你的谓词,它应该可以正常工作,

    [NSPredicate predicateWithFormat:@"player.metadata.selected == %@", @YES];
    

    【讨论】:

    • 这行得通,谢谢。现在的问题是-[NSFetchedResultsControllerDelegate controllerDidChangeContent:]在选择的播放器改变时似乎没有被调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多