0

我是 Cocoa 和 Objective-C 的新手,所以我在学习 Lynda 的课程并学到了很多东西。问题是,我遇到了一个我无法弄清楚的问题,即使我似乎在做同样的事情......

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

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

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

(另外,我不知道这是否相关,但检查器中的“模型键路径”字段都没有在我键入时提供建议,他们在 Lynda 课程中这样做。如果我手动,该应用程序可以正常工作输入所有内容,但始终显示“未找到完成”。)

提前感谢您帮助 n00b!

4

2 回答 2

1

在我键入时,检查器中的“模型键路径”字段都没有提供建议

据我了解,这可能是因为NSMutableArray保存您的数据数组 iedogPound或类似的,也没有声明为属性,只是一个实例变量。
声明属性@property NSMutableArray * dogPound;并将实例变量声明更改为_dogPound,我认为界面生成器应该为您提供自动完成功能。

于 2013-08-10T12:51:25.963 回答
0

我是 Cocoa 和 Objective-C 的新手

我也是。

我已经把所有东西都正确连接起来了,

在大约 30 分钟内,我可以使用像 Dog 这样的自定义类和另一个名为 AppController 的类来设置所有内容,该类由一个实例变量组成:NSMutableArray* dogPound。AppController 类的 init() 方法创建数组并将一些 Dog 实例添加到数组中。我还将 NSArrayController 绑定到 dogPound 数组,并将 NSTableView 列绑定到 NSArrayController。在我 Build&Run 之后,NSTableView 会显示 dogPound 数组中每个 Dog 实例的信息。

我还尝试了一个更简单的版本,其中没有 Dog 类,并且 AppController 类中的数组仅包含一些 NSString 对象。再一次,我能够成功地将 NSArrayController 绑定到数组并将表的列绑定到 NSArrayController,这样 NSTableView 就可以显示数组中的所有 NSString。

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

这就是奇怪的地方:在百灵鸟上,我添加了一个“+”按钮并将其连接到阵列控制器的“添加”功能中,当我运行应用程序并单击该按钮时,它不仅添加了一个新行,但它也显示了整个数组!

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

我觉得这可能是一个简单的解决方案,只是一些需要检查的“连续”框或其他东西,

不,不是那样的。

在我键入时,检查器中的“模型键路径”字段都没有提供建议

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

于 2013-04-15T05:26:01.790 回答