Xcode 数组控制器在“0”之前不更新表视图;加上「;按钮按下了

Xcode 数组控制器在“0”之前不更新表视图;加上「;按钮按下了,xcode,cocoa,nsmutablearray,nstableview,nsarraycontroller,Xcode,Cocoa,Nsmutablearray,Nstableview,Nsarraycontroller,我刚接触Cocoa和Objective-C,所以我学习了Lynda的课程,学到了很多东西。问题是,我遇到了一个我无法解决的问题,尽管我似乎是用完全相同的方式来解决的 基本上,我试图通过绑定将一个表视图连接到一个数组控制器,只是为了在代码中列出一个简单的NSMutableArray的内容。我已经把它连接好了,但是无论我做什么,当我运行程序时,它都没有显示任何内容 这里是它变得奇怪的地方:在云雀上,我添加了一个“+”按钮,并将其连接到阵列控制器的“添加”功能中,当我运行应用程序并单击该按钮时,它不仅

我刚接触Cocoa和Objective-C,所以我学习了Lynda的课程,学到了很多东西。问题是,我遇到了一个我无法解决的问题,尽管我似乎是用完全相同的方式来解决的

基本上,我试图通过绑定将一个表视图连接到一个数组控制器,只是为了在代码中列出一个简单的NSMutableArray的内容。我已经把它连接好了,但是无论我做什么,当我运行程序时,它都没有显示任何内容

这里是它变得奇怪的地方:在云雀上,我添加了一个“+”按钮,并将其连接到阵列控制器的“添加”功能中,当我运行应用程序并单击该按钮时,它不仅添加了一个新行,而且还显示了整个阵列!显然,所有的东西在整个过程中都连接得很好,只是没有显示信息。进一步的实验表明,无论是在原始代码中还是在应用程序运行期间,我都可以对数组进行任何更改,但只有在单击“+”按钮时,才会在表视图中更新这些更改

我觉得这可能是一个简单的解决方案,只是一些需要检查的“连续”框或其他东西,但我一生都找不到它。。。有人能指出我需要做什么才能让我的TableView自动显示其内容吗

(另外,我不知道这是否相关,但inspector中的“Model Key Path”字段在我键入时都没有提供建议,就像他们在Lynda课程中所做的那样。如果我手动键入所有内容,应用程序工作正常,但它始终显示“未找到完成项”。)

提前感谢您为n00b提供帮助

我对Cocoa和Objective-C不熟悉

我也是

我把所有的东西都连接好了

在大约30分钟内,我可以用一个自定义类(如Dog)和另一个名为AppController的类(由一个实例变量组成):NSMutableArray*dogPound)完成所有设置。AppController类的init()方法创建数组并向数组中添加一些Dog实例。我还将NSArrayController绑定到dogPound数组,并将NSTableView列绑定到NSArrayController。构建和运行后,NSTableView将显示dogPound数组中每个Dog实例的信息

我还尝试了一个更简单的版本,其中没有Dog类,AppController类中的数组只是由一些NSString对象组成。再一次,我成功地将NSArrayController绑定到数组,并将表的列绑定到NSArrayController,因此NSTableView显示了数组中的所有NSString

你需要发布准确的代码,你需要写下你在IB中所做的每一步,这当然是一个巨大的痛苦,但这是任何人都能帮助你的唯一方式

这里是它变得奇怪的地方:在云雀上,我加了一个“+”按钮并钩住了它 当我运行 应用程序并单击该按钮,它不仅添加了一个新行,而且 也显示了整个阵列

当然。NSArrayController中的add:方法向数组中添加一个新项,然后向NSTableView发出信号,指示它应该重新加载数据,即显示数组中当前的所有内容

我觉得这可能是一个简单的解决方案,只是一些“持续的” 需要检查的框或什么的

不,不是那样的

检查器中没有提供任何“模型密钥路径”字段 我打字时的建议

缺少自动完成选项是一个很大的暗示,表明你做错了什么事——尽管我发现我不能总是弄清楚,所以我只是继续打字。您是否记得在NSArrayController的属性检查器(对象控制器部分)中启动绑定?在IB中,您是否通过将对象拖到MainWindow.xib上来创建AppController类的实例,或者您称之为包含NSMutableArray的类的任何实例

inspector中的“Model Key Path”字段都没有在我键入时提供建议

据我所知,这可能是因为保存数据数组(即
dogpund
或类似数组)的
NSMutableArray
也没有声明为属性,只是声明为实例变量。

声明属性
@property NSMutableArray*dogpund
并将实例变量声明更改为
\u dogpund
,我认为interface builder应该为您提供自动完成功能。

绘图变厚:显然,“+”将显示当时有多少行(称为X行),然后从那时起,系统将完美地识别X行,但不再识别更多。将它增加到2行,然后单击“+”,现在它显示2行,但不再显示。显然,“add”函数正在初始化一定数量的行,而我的代码通常不是这样。这有助于任何人知道发生了什么吗?用这些更改重新启动x代码也有帮助,可能只是有点问题