如果在“自动重新排列内容”中,NSArrayController上的objective-c – setFilterPredicate不起作用

如果在“自动重新排列内容”中,NSArrayController上的objective-c – setFilterPredicate不起作用,第1张

概述我有一个经典的CoreData应用程序,在NSTableView中使用Binding显示它的数据(全部使用XCode 4.2完成). 工作正常,直到我昨天决定在Attributes Inspector中检查ArrayController的“Auto Rearrange Content”.现在,当我尝试在其上设置过滤谓词时,我得到: [<_NSFaultingMutableSet 0x102b659 我有一个经典的CoreData应用程序,在NStableVIEw中使用Binding显示它的数据(全部使用XCode 4.2完成).

工作正常,直到我昨天决定在Attributes Inspector中检查ArrayController的“auto Rearrange Content”.现在,当我尝试在其上设置过滤谓词时,我得到:

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

请记住,如果没有此选项,它可以完美地工作:谓词很好,控制器正在过滤它的托管内容,而表视图只显示与谓词匹配的实体.

当然,我可以取消启用此“自动重新排列内容”,但它对于在实体更改时维护排序顺序很有用.如果我编辑一个实体,“修改日期”更改,并且由于我的排序顺序是在此日期,我希望tableVIEw自动重新排序它的行.并且它使用此选项,但唉添加了“addobserver不支持”的错误.

_NSFaultingMutableSet来自相关实体中的多对多关系,因此是“Set”.也许“自动重新排列内容”与具有多对多关系的“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.aliases.name CONTAINS[cd] %@).@count !=0

分别.

可能这个谓词是错误的,我之前没有遇到过其他问题.

总结

以上是内存溢出为你收集整理的如果在“自动重新排列内容”中,NSArrayController上的objective-c – setFilterPredicate不起作用全部内容,希望文章能够帮你解决如果在“自动重新排列内容”中,NSArrayController上的objective-c – setFilterPredicate不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存