与NSTableView自动保存功能一起使用的列标识符必须符合NSCoding协议:

时间:2013-02-12 18:11:46

标签: objective-c cocoa

我有一个NSTableView,我正在尝试设置自动保存以保留列大小和排序。

在属性检查器中,我在“表视图”下的“自动保存”字段中输入了一个值,并选中了“列信息”。

当我构建并运行应用程序时,出现错误:

Column identifiers used with NSTableView autosave feature must conform to NSCoding protocol: (null)

我是Cocoa / Objective-C的新手,所以我不清楚如何定义列标识符?

更新:我没有为标识符输入任何值,它被列为“自动”。但是,如果我在表列的标识符中输入字符串值,我仍然会得到相同的结果

更新II :清洁和重建似乎在手动输入值后修复了它。但为什么自动识别器不起作用?

3 个答案:

答案 0 :(得分:1)

  

清洁和重建似乎在手动输入后修复了它   值。但为什么自动识别器不起作用?

Interface Builder有时会接受输入。他们做了相当多的重新工作,将IB直接集成到Xcode 4中,这增加了许多奇怪的错误。

随着点发布的推出,Apple已经在Xcode 4中稳定了IB。所需的清洁/重建量远低于以往。

答案 1 :(得分:1)

我遇到了这个问题,直到我确定每个列都有一个标识符。然后它奏效了。

答案 2 :(得分:0)

这个问题的答案都没有令人满意地回答这个问题。是的,您需要为每个NSTableColumn设置标识符值; “自动”标识符显然不起作用(从Xcode 7.2开始)。但是你在哪里设置这些?标识符不在IB窗格中的值检查器中,您可能期望它(这是我查找它的地方,然后做了一些令人头疼的事)。相反,它位于IB窗格中的Identity Inspector上,看起来像一个小报纸。我猜identifier可能是所有nib对象(?)的一般属性,但我不记得以前需要使用它之前的任何其他东西,所以我从来没有注意到它在那里。无论如何,我正在添加这个答案,以防其他人感到困惑,就像我一样,identifier可以在哪里设置......