NSArrayController绑定到network.posts,其中’posts’是1-M关系.注意我绑定到’posts’而不是mogenerator生成的’postsSet’mutableSet访问器.
该集合表示与另一个实体的关系.阵列控制器具有排序描述符集,当与窗口关联的窗口打开时,数据以正确的排序顺序显示.
然后我通过实例化一个实体然后将其添加到关系中来添加一个新对象.
NSArrayController正确地观察到此更改,并且新对象出现在arrangeObjects中,但是,在插入后,arrangeObjects的排序顺序丢失,并且记录以不同的顺序出现.
我已经验证排序描述符仍然正确设置. NSArrayController具有autoRearrangeContent = YES.我甚至尝试在插入后手动调用-rearrangeObjects,但排序顺序仍然是错误的.
如果我关闭窗口并重新打开新实例化的NSArrayController,则会再次使用正确的排序顺序.直到我做另一个插入.
我的经验是NSArrayController在添加/删除对象时自动保持正确的排序顺序,但这可能是一个幸运的巧合?
我在Apple文档中找不到任何正确行为的描述,所以我不知道会发生什么,可能出现什么问题(如果有的话),或者 – 在任何一种情况下 – 我应该怎么做.
1)给定一个sortDescriptor NSArrayController应该保持arrangeObjects在从底层集合插入/删除对象后排序吗?
2)如果是这样,可能会阻止这种情况发生?
3)而且,如果没有,保持arrangeObjects排序的正确方法是什么?
我会感激任何帮助.在这种情况下提供有用的源代码并不容易,因为原则上没有任何源代码.但我很乐意澄清并回答任何后续问题.
解决方法 关闭延迟抓取.不确定原因,但是当控制器处于懒惰状态时,它不会在编辑或添加时采取措施. 总结以上是内存溢出为你收集整理的objective-c – 为什么NSArrayController在插入对象后“丢失”它的排序?全部内容,希望文章能够帮你解决objective-c – 为什么NSArrayController在插入对象后“丢失”它的排序?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)