NSDictionary变量未传递给其他方法

时间:2011-01-25 16:41:23

标签: iphone ios nsdictionary

我有一个从ViewController获取NSDictionary的方法,并将其分配给RequestModel类中的全局NSDictionary(cardDictionary)变量。 cardDictionary被声明为属性(非原子,保留)并且它被合成。这工作正常(由NSLog验证)。这是:

-(void)findIndexForCardPage:(NSDictionary*)dictionary  {
//parse here and send to a global dictionary
self.cardDictionary = dictionary;
NSLog(@"%@",cardDictionary);
}

现在,当我尝试在另一个方法中访问该变量时,仍然在RequestModel类中,它为null:

-(NSDictionary*)parseDictionaryForCardPage  {
//parse dictionary here for data needed on card page
NSLog(@"%@",cardDictionary);
return cardDictionary;

}

此方法从viewcontroller类调用,cardDictionary为null。如何让cardDictionary保留以前方法的数据?我尝试从self.cartDictionary中取出自我......没有运气。还有什么我应该知道的吗?

3 个答案:

答案 0 :(得分:1)

如果你说cardDictionary是全局变量,那么self.cardDictionary - 可能正在访问实例变量。

并在

-(NSDictionary*)parseDictionaryForCardPage  {
//parse dictionary here for data needed on card page
NSLog(@"%@",cardDictionary);
return cardDictionary;

}

您正在访问全球的。删除它并使用实例变量。

答案 1 :(得分:1)

你确定第二次调用(parseDictionaryForCardPage)使用与第一次调用(findIndexForCardPage)相同的RequestModel实例吗?

答案 2 :(得分:0)

RequestModal类中的属性应声明为retain:

@property (nonatomic,retain) NSDictionary* cardDictionary;

在RequestModal类的@implementation部分中,您应该合成属性:

@synthesize cardDictionary;

这个方法是正确的:

-(void)findIndexForCardPage:(NSDictionary*)dictionary  {
//parse here and send to a global dictionary
self.cardDictionary = dictionary;
NSLog(@"%@",cardDictionary);
}

在这种方法中你应该添加自我。到财产的名称:

-(NSDictionary*)parseDictionaryForCardPage  {
//parse dictionary here for data needed on card page
NSLog(@"%@",self.cardDictionary);
return cardDictionary;

}