小编Mat*_*wer的帖子

为什么NSArrayController在插入对象后"丢失"它的排序?

我有一个NSArrayController绑定到NSManagedObject子类的属性.子类由mogenerator自动生成(为关系创建set属性).

NSArrayController绑定到network.posts,其中'posts'是1-M关系.注意我绑定到'posts'而不是mogenerator生成的'postsSet'mutableSet访问器.

该集合表示与另一个实体的关系.阵列控制器具有排序描述符集,当与窗口关联的窗口打开时,数据以正确的排序顺序显示.

然后我通过实例化一个实体然后将其添加到关系中来添加一个新对象.

NSArrayController的正确观察这种变化和新的对象出现在arrangedObjects然而,插入arrangedObjects的排序次序会丢失后的记录出现在不同的顺序.

我已经验证排序描述符仍然正确设置.NSArrayController具有autoRearrangeContent = YES.我甚至尝试在插入后手动调用-rearrangeObjects,但排序顺序仍然是错误的.

如果我关闭窗口并重新打开新实例化的NSArrayController,则会再次使用正确的排序顺序.直到我做另一个插入.

我的经验是NSArrayController在添加/删除对象时自动保持正确的排序顺序,但这可能是一个幸运的巧合?

我找不到Apple文档中正确行为的任何描述,因此我不知道会发生什么,可能出现什么问题(如果有的话),或者 - 在任何一种情况下 - 我应该怎么做.

1)给定一个sortDescriptor NSArrayController应该保持arrangeObjects在从底层集合插入/删除对象后排序吗?

2)如果是这样,可能会阻止这种情况发生?

3)而且,如果没有,保持arrangeObjects排序的正确方法是什么?

我会感激任何帮助.在这种情况下提供有用的源代码并不容易,因为原则上没有任何源代码.但我很乐意澄清并回答任何后续问题.

sorting cocoa core-data objective-c nsarraycontroller

4
推荐指数
1
解决办法
1620
查看次数