NSTableView:重命名一行会导致同时重命名两行

NSTableView: Renaming one row results in renaming two rows at once

我的设置: 我有一个基于单元格的 NSTableview。这些列绑定到 NSArrayController 的值(Interface Builder 中的键值绑定)。 NSArrayController 包含一组 NSManagedObjects(CoreData 实体(设备))。 table视图的 sortDescriptor 绑定到数组控制器之一。

我的问题: 当我按名称对 table 视图排序然后重命名一行时,NSArrayController 重新排列它的内容,而 nstable 视图更改行的顺序。我要那个。但是,它不只是重命名一行,而是重命名两行。只有当行的顺序由于其排序描述符而必须更改时才会发生这种情况。

即table 视图看起来像下面的左行。如果我将 f 重命名为 b,它会更改为右侧的行

a         ->           a
c         ->           b
d         ->           b
e         ->           c
f         ->           d

我在名字属性的setter处设置了一个断点,看看是什么设置了第二次这个名字。然而,我并没有通过查看堆栈变得更聪明。

这是第一次调用 setter:

这是第二次:

我已经构建了一个示例应用程序,但是我无法重现此行为。我一定是在某个地方做错了什么,但我找不到什么。一整天都在尝试。有谁知道,这里出了什么问题?谢谢:)

我找到了问题的根源:

不知道具体原因是什么,但是有两个戒指我做错了。

  1. 我绑定了 NSTableView 的内容 属性 NSArrayController 的 arrangedObjects。我删除了那个。就在那时我注意到肯定有其他问题,因为现在 NSTableView 中根本看不到任何数据:
  2. 当 NSTableView 准备好时,NSArrayController 还没有准备好 正在使用绑定进行设置。所以列已经绑定到 零。我现在在 arrangedObjects 准备就绪后立即以编程方式将列值绑定到 NSArrayController 的 arrangedObjects。