Доступ к NSMutableDictionary через классы - PullRequest
0 голосов
/ 09 апреля 2010

Я объявил объект NSMutableDictionary в AppController.h и инициализировал в соответствующем файле 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;
}

Теперь я хочу использовать объект NSMutableDictionary в другом представлении, flashcardView. Я добавляю / удаляю элементы в словаре, используя методы в классе AppController, и хочу использовать тот же словарь (с текущими элементами, все еще присутствующими в нем) в представлении flashcardView. Проблема в том, что я не знаю, как получить доступ к объекту словаря извне AppController. Как бы я это сделал?

от flashcardView.m

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

Вот в чем проблема. Что мне делать с uberDict, чтобы эта работа работала? Спасибо!

1 Ответ

0 голосов
/ 09 апреля 2010

Хотя я рекомендую вам взглянуть на альтернативные шаблоны проектирования, чтобы сделать то, что вы ищете, вам просто нужно добавить метод (или свойство) для доступа к uberDict в AppController. Как свойство, код будет:

@interface AppController : NSObject {
     NSMutableDictionary *uberDict;
}

@property (readonly) NSMutableArray *uberDict;
@end

в файле AppController.h и просто добавьте одну строку @synthesize uberDict; внутри реализации AppContoller (до @end). Не беспокойтесь о (только для чтения) - это означает, что объект, получающий uberDict, не может установить для него новый словарь, но все же может изменить содержимое dict и прочитать из него.

...