gpt4 book ai didi

objective-c - NSArrayController 上的 setFilterPredicate 在 "Auto Rearrange Content"中不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:11 24 4
gpt4 key购买 nike

我有一个经典的 CoreData 应用程序,通过绑定(bind)在 NSTableView 中显示它的数据(全部使用 XCode 4.2 完成)。

工作正常,直到我昨天决定在属性检查器中检查 ArrayController 的“自动重新排列内容”。现在,当我尝试在其上设置过滤器谓词时,我得到:

[<_NSFaultingMutableSet 0x102b65950> addObserver:forKeyPath:options:context:] is not supported. Key path: name

请记住,如果没有这个选项,它会完美地工作:谓词是好的, Controller 正在正确地过滤它的托管内容,并且 TableView 只显示与谓词匹配的实体。

当然,我可以取消启用此“自动重新排列内容”,但它对于在实体发生更改时保持排序顺序很有用。如果我编辑一个实体,“修改日期”会发生变化,并且由于我的排序顺序是在这个日期,所以我希望 TableView 自动重新排序它的行。它确实使用了这个选项,但遗憾的是添加了“addObserver not supported”错误。

_NSFaultingMutableSet 来自相关实体中的一对多关系,因此是“集合”。也许“自动重新排列内容”与具有一对多关系的“setFilterPredicate”不兼容?

有人遇到类似问题吗? NSArrayController 的内部错误?

注意:引起问题的谓词形式为

name CONTAINS[cd] %@ OR ANY aliases.name CONTAINS[cd] %@

ANY tags.name CONTAINS[cd] %@ OR ANY tags.aliases.name CONTAINS[cd] %@

似乎“ANY”引起了一些冲突...

最佳答案

找到了一个解决方案,上面对 SUBQUERY 进行了评论。

保留“自动重新排列内容”选项,但将谓词更改为:

name CONTAINS[cd] %@ OR SUBQUERY(aliases, $anAlias, $anAlias.name CONTAINS[cd] %@).@count != 0

SUBQUERY(tags, $aTag, $aTag.name CONTAINS[cd] %@).@count !=0 OR SUBQUERY(tags, $aTag, $aTag.aliases.name CONTAINS[cd] %@).@count !=0

分别。

可能谓词有误,我之前没有遇到其他问题。

关于objective-c - NSArrayController 上的 setFilterPredicate 在 "Auto Rearrange Content"中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8341325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com