我有一个从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中取出自我......没有运气。还有什么我应该知道的吗?
答案 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;
}