跨类访问NSMutableDictionary

时间:2010-04-09 05:25:30

标签: objective-c nsmutabledictionary

我在AppController.h中声明了一个NSMutableDictionary对象,并在相应的AppController.m文件中初始化。

AppController.h

 #import <Cocoa/Cocoa.h>


 @interface AppController : NSObject {

      NSMutableDictionary *uberDict;

 }

AppController.m

#import "AppController.h"


@implementation AppController


- (id)init
{
 uberDict = [NSMutableDictionary new];

 return self;
}

现在我想在另一个视图flashcardView中使用NSMutableDictionary对象。我使用AppController类中的方法在字典中添加/删除项目,并希望在flashcardView视图中使用相同的字典(当前项目仍然存在于其中)。问题是我不知道如何从AppController外部访问字典对象。我该怎么办?

来自flashcardView.m

- (void)setAndCheckString
{
 NSArray *keys = [uberDict allKeys];
 NSString *i;
 for (i in keys) {
  string = i;
  NSLog(@"%@", string);
 }
}

这就是问题所在。我该如何处理uberDict来完成这项工作?谢谢!

1 个答案:

答案 0 :(得分:0)

虽然我鼓励您查看其他设计模式,但要执行您正在寻找的内容,您只需添加一个方法(或属性)即可访问uberDict到AppController。作为属性,代码将是:

@interface AppController : NSObject {
     NSMutableDictionary *uberDict;
}

@property (readonly) NSMutableArray *uberDict;
@end
在AppController.h文件中

,只需添加一行@synthesize uberDict;在AppContoller实现中(在@end之前)。不要担心(只读) - 这意味着获取uberDict的对象无法将其设置为新的字典,但仍然可以修改字典的内容并从中读取。