如何从NSMutableArray中保存的另一个对象访问NSDocument对象?

时间:2011-10-09 14:54:03

标签: cocoa nsdocument

这实际上是How to show calculated values in NSTableView?

的扩展

问题

我有一个NSDocument类,它包含两个属性:text(NSString)和phrases(NSObjects的NSMutableArray,其中包含NSString)。 在Doc NIB文件中,我有一个带有两列的TextView(显示短语)。第一列绑定到ArrayController并显示NSString。这没问题。 我想计算text中出现的NSString的数量,并在第二列中显示。

我尝试了什么

在我的NSObject中定义一个指向TextView的静态var。加载NIB后,它会将此静态var设置为包含text字符串的TextView。

如果我打开一个窗口,这可以正常工作。但是如果我尝试打开多个窗口,静态var将使用TextView的新实例(来自其他窗口)进行更新。显然这会打破一切。

问题

如何从每个NSObject访问text?换句话说,对象图是NSDocument - (包含一个) - > NSMutableArray - (包含多个) - > NSObject,那么如何从NSObject获取NSDocument?

1 个答案:

答案 0 :(得分:1)

使用字典数组:

而不是字符串数组
    NSDictionary *entry = [NSDictionary dictionaryWithObjectsAndKeys:
                                          thePhrase, @"phrase",
                                          theCount, @"count",
                                          nil];
    [theArray addObject:entry];

绑定到arrangedObjects.phrasearrangedObjects.count

或者,您可以创建一个Phrase类,其中包含短语,对文档的引用以及计算计数的代码。