NSArrayController不与NSTableView的NSMutableDictionary一起使用

时间:2010-05-11 15:14:34

标签: cocoa nstableview nsarraycontroller nsmutabledictionary

我正在尝试使用NSMutableDictionary记录的NSMutableArrayController在NSTableView中显示内容。

我按照以下步骤操作:

  1. 在应用程序委托类中,我创建了一个名为'geniuses'的NSMutableArray对象,并存储了一些带有键的NSMutableDictionary对象:'geniusName'和'domain'。

  2. 我在IB中获取了一个NSArrayController对象,将其控制器内容属性绑定到应用程序委托类,并将其模型关键路径设置为“geniuses”。在属性检查器窗格中,将模式设置为类,将类名设置为NSMutableDictionary。添加 键:'geniusName'和'domain'到它。

  3. 在IB中我拿了一个表视图对象。将其内容属性绑定到数组控制器,将控制器关键路径设置为排列对象。第一列到数组控制器的Binded值属性,控制器键路径设置为排列对象,模型键路径设置为'geniusName'。第二列的二进制值属性为数组控制器,控制器键路径设置为已排列对象,模型键路径设置为“geniusName”。

  4. 在我尝试构建和运行项目后执行以下步骤后,我找到了未填充的表视图。

    有人可以建议我在哪里错吗?

    谢谢,

    Miraaj

2 个答案:

答案 0 :(得分:1)

我现在无法检查您的代码。你如何填充genuises阵列?您必须实现key-value-coding accessor methods并在插入或删除数组中的数据时使用它们以生成KVO通知。

答案 1 :(得分:1)

我假设您为可变数组声明了一个实例变量:

NSMutableArray *myObjects;

但你真的创建了数组吗?

变量只是指向数组对象的指针的容器。您仍然需要创建一个数组对象并将其指针放在变量中,可能在您的应用程序委托的initinitWithCoder:方法中。

忘记这样做是您遇到问题的常见原因。在创建数组之前,实例变量包含nil,并且所有尝试将事物放入或从不存在的数组中检索事物都是nil的消息,它们什么也不做。