NSMutabledictionary不起作用

时间:2011-07-06 14:50:15

标签: objective-c nsmutabledictionary

我是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”为空。为什么即使将init与数据一起使用它也是null。

2 个答案:

答案 0 :(得分:0)

您没有正确初始化,因此无法访问实例变量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;
}

您可能需要read up on this link以获取有关如何实现指定初始值设定项的更多信息。特别关注实施初始化程序主题。

答案 1 :(得分:0)

在上面的代码中,您不会保留userInfo个对象。试试

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

或者,如果userInfo是如下属性:

@property (nonatomic, retain)

尝试:

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

哪个会自动保留userInfo。请注意,如果不调用self,则直接指定实例变量。

最后,确保data对象不为空