【问题标题】:NSArrayController not working with NSMutableDictionary for NSTableViewNSArrayController 不适用于 NSTableView 的 NSMutableDictionary
【发布时间】:2011-02-18 04:58:13
【问题描述】:

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

我按照以下步骤操作:

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

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

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

在我尝试构建和运行项目时执行这些步骤后,我发现未填充的表视图。

谁能建议我哪里可能错了?

谢谢,

米拉杰

【问题讨论】:

  • 呃,这是一个糟糕的文件共享服务。我可以推荐 Google Docs、Dropbox、MobileMe、Bitbucket 或 GitHub 吗?
  • 好的..我一定会使用你建议的更好的文件共享服务..干杯
  • 您需要更新代码的链接。或者更好的是,只需将其放在帖子中即可。我有同样的问题,但不想创建一个欺骗问题......所以你的问题需要可用,拜托!
  • @alex...我使用的文件共享服务已被代码删除。所以我将无法与您共享该代码。对不起!
  • @alex...如果您有同样的问题..那么这里已经为您解答了;)

标签: cocoa nstableview nsarraycontroller nsmutabledictionary


【解决方案1】:

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

【讨论】:

  • 不仅要实现它们,还要使用它们。也就是说,您必须向自己发送访问器消息,而不是直接改变数组。
  • 我认为这是暗示,但你说得对,我应该更清楚,所以我编辑了我的帖子。
【解决方案2】:

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

NSMutableArray *myObjects;

但是你真的创建了数组吗?

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

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

【讨论】:

    猜你喜欢
    • 2018-12-30
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2022-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多