【问题标题】:arrayController "valueForUndefinedKey": why it gets istantiated immediately?arrayController“valueForUndefinedKey”:为什么它会立即被实例化?
【发布时间】:2011-04-25 10:31:49
【问题描述】:

我的应用程序有 2 个窗口,它们都显示由控制器管理的 NSScrollView 对象。基本上第一个有数据,第二个有适当的数据聚合。 两者都依赖于 NSArrayController 类的实现。

我正确设计了两个窗口(至少我相信如此),但我不断收到此错误:

    [<MyDocument 0x1020257c0> valueForUndefinedKey:]: 
this class is not key value coding-compliant for the key <MY_ARRAY>.

我设法解决这个问题的唯一方法是立即实例化(我的意思是当第一个窗口准备好时)第二个数组并以这种方式填充一些值:

NSMutableArray *newAggregates = [NSMutableArray array];

    [newAggregates addObject:
     [NSMutableDictionary dictionaryWithObjectsAndKeys:
      [NSString stringWithString:@"category"], @"category",
      [NSString stringWithString:@"subcategory"], @"subcategory",
      [NSNumber numberWithFloat:0.0], @"amount_1",
      [NSNumber numberWithFloat:0.0], @"amount_2",
      [NSNumber numberWithFloat:0.0], @"amount_3",
      [NSNumber numberWithFloat:0.0], @"amount_4",
      [NSNumber numberWithFloat:0.0], @"amount_5",
      [NSNumber numberWithFloat:0.0], @"amount_6",
      [NSNumber numberWithFloat:0.0], @"amount_7",
      [NSNumber numberWithFloat:0.0], @"amount_8",
      [NSNumber numberWithFloat:0.0], @"amount_9",
      [NSNumber numberWithFloat:0.0], @"amount_10",
      [NSNumber numberWithFloat:0.0], @"amount_11",
      [NSNumber numberWithFloat:0.0], @"amount_12",
      [NSNumber numberWithFloat:0.0], @"total",
      nil]];

    [self setAggregates:newAggregates];

这行得通,但这不是我想要的,我希望第二个数组仅当且仅当用户按下某个按钮时才可选地执行。

有没有办法做到这一点,或者应用程序中存在的任何数组控制器都必须在开始时实例化?我绝对肯定有办法避免这种情况......

【问题讨论】:

    标签: objective-c xcode nsarraycontroller


    【解决方案1】:

    我不知道为什么您的解决方法有效(也许您的 setAggregates: 方法阻止了最终导致错误的调用?)。该错误意味着您在文档对象上绑定了一个名为&lt;MY_ARRAY&gt; 的属性。我猜它可能是您的数组控制器之一的内容绑定。您需要将其更改为类中使用的属性的实际名称。

    【讨论】:

    • 对不起,我不明白你的意思,当然我有 NSView 绑定到我的 NSArrayController,但它们都属于第二个窗口。我的观点是,我希望在第二个窗口被实例化时初始化它,即打开...
    • 问题是你把 NSArrayController 绑定到了错误的东西上,而不是你需要初始化数组。
    • 好吧,我已经将 NSArrayController 绑定到 NSScrollView,坦率地说我不确定我的错误是,有很多教程描述了作为实现 NSScrollView 填充的一种方式,肯定有错误,但不知道是哪一个。无论如何,谢谢你的评论:)
    • @ughoavgfhw 我知道这个答案很旧,但我只是想让你知道它帮助我诊断出我在重构过程中遇到的相同错误。我有一个数组控制器绑定到我的控制器文件中的 NSManagedObjectContext 对象,我将属性移动到另一个类。它完全打破了绑定,并吐出了这个我一生都无法弄清楚的错误。即使 OP 可能不明白你在说什么,其他人也会明白!谢谢!!
    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2012-11-20
    • 1970-01-01
    相关资源
    最近更新 更多