NSMutabledictionary не работает - PullRequest
0 голосов
/ 06 июля 2011

Я новичок в программировании Iphone. Пожалуйста, поправьте меня, где я ошибаюсь.

У меня есть два viewcontrollers

viewcontroller1 viewcontroller2

В viewcontroller1,

-(IBAction) getQuestions:(id)sender
{
    NSLog(@"In get questions..");

    [[self viewcontroller2] initWithData:userInfo];

    [self presentModalViewController:viewcontroller2 animated:YES];

    [quesions autorelease];
}

В viewController2 у меня есть следующий код.

    -(id)initWithData:(NSMutableDictionary*)data
    {   
        self = [super init];

        if(self)
        {
        userInfo = [[NSMutableDictionary alloc] initWithDictionary:data];
        }

        return self;
    }



 -(IBAction) getQuesionAfterPopUp:(id) sender
{
    NSLog(@"In get question..After popup...%@",userInfo);

}

По какой-то причине userInfo имеет значение null. Почему он нулевой даже после использования init с данными.

Ответы [ 2 ]

0 голосов
/ 06 июля 2011

в приведенном выше коде вы не сохраняете свой объект userInfo.Попробуйте

userInfo = [[[NSMutableDictionary alloc] initWithDictionary:data]]retain];

Или, если userInfo является таким свойством, как:

@property (nonatomic, retain)

Попробуйте:

self.userInfo = [[NSMutableDictionary alloc] initWithDictionary:data]];

, которое автоматически сохранит userInfo.Обратите внимание: не вызывая self, вы присваиваете переменную экземпляра напрямую.

Наконец, убедитесь, что объект data не пустой

0 голосов
/ 06 июля 2011

Вы неправильно инициализировали, поэтому переменная экземпляра userInfo недоступна.

Инициализация должна выглядеть следующим образом:

- (id)initWithData:(NSMutableDictionary *)data 
{
    self = [super init]; // 'self' and it's instance variables are accessible at this point ...
    if (self) 
    {
        userInfo = // etc...
    }
    return self;
}

Возможно, вы захотите прочитать по этой ссылке для получения дополнительной информации о том, как реализовать назначенные инициализаторы. Особое внимание уделите теме Реализация инициализатора .

...