1

我有个问题。

我有一个名为“mapController”的 NSObjectController,我想在创建对象时设置一些默认值。按照文档的建议,我在文档的windowControllerDidLoadNib方法中执行此操作。但是……</p>

if (![mapController content]){   // No map defined yet.
    [mapController add: self];   // This should create the instance.

    NSLog(@"%@",[mapController content]); // Gives NULL.

我试过了:

    BOOL ok = [mapController fetchWithRequest:nil merge:NO error:nil];
    NSLog(@"%@",[mapController content]); // Gives NULL.

mapController 的内容在核心数据“便笺簿”中,但我无法访问它。我必须像这样设置它的一个属性:

    [[mapController content] setValue:[matrix colorReference] forKey:@"mapData"];

这没有错误,文件被标记为已更改,但我测试了值:

    NSLog(@"%@",[mapController content]); // Gives NULL.

什么时候控制器的内容真的在这里?屏幕上出现了一些东西,但是……实际上是什么?阅读文档对我没有帮助……</p>

4

2 回答 2

1

好的,我在文档中找到了答案:

add:创建一个新对象并将其设置为接收者的内容对象。

讨论

创建适当实体(由 entityName 指定)或类(由 objectClass 指定)的新对象——参见 newObject——并使用 addObject: 将其设置为接收者的内容对象。

特别注意事项

从 Mac OS X v10.4 开始,此方法的结果被推迟到runloop 的下一次迭代,以便错误呈现机制可以以表格形式提供反馈。

这就是为什么

[[mapController content] setValue:[matrix colorReference] forKey:@"mapData"];

在应用程序的其他地方调用时工作正常。几次迭代之后……</p>

嗯……也许这篇文章会为你节省几个小时,你可以用来睡得更久。

问候,

伯纳德

于 2012-07-07T23:10:00.860 回答
0

我不认为它是你的 mapController,我认为它是你的 NSLog。尝试这个:

NSLog(@"%@", mapController);

还可以尝试从内容中获取简单数据,例如 CGColorRef 的浮点值,以便您可以使用其他格式化程序,例如 %f。

我会对此进行测试,但我似乎无法创建 NSObjectController 的实例,因为它是一个未声明的标识符。它是在什么框架中定义的?你必须#import什么吗?

于 2012-07-20T09:09:37.440 回答