2011-01-25 11 views
0

私はViewControllerからNSDictionaryを取得し、それをRequestModelクラスのグローバルNSDictionary(cardDictionary)変数に代入するメソッドを持っています。 cardDictionaryはプロパティ(非原子的、保持)として宣言され、合成されます。それはOKです(NSLogによって確認されたように)。ここでは、次のとおりです。今NSDictionary変数が他のメソッドに渡されていない

-(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から自己を取り出してみました...運はありません。他に何か知っておくべきことは?

答えて

1

cardDictionaryがグローバル変数であり、self.cardDictionaryであると言えば、おそらくインスタンス変数にアクセスしています。

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

} 

にあなたはグローバルなものにアクセスしています。これを削除し、インスタンス変数を使用します。

+0

これは機能しませんでした。 cardDictionaryはプロパティ(非原子的、保持)として宣言され、合成されます。私は自己を使わずにそれを試してみました。 – nicholjs

+0

cardDictionaryという変数がありますか? – Max

+0

はい。私はしました:@property(nonatomic、retain)NSDictionary * cardDictionary;次に、cardDictionaryを@synthesizeします。 deallocでそれをリリースしました。 – nicholjs

0

保持としてあなたはRequestModalクラスのプロパティを宣言する必要があります:あなたが財産を合成する必要がありRequestModalクラスの@implementationセクションで

@property (nonatomic,retain) NSDictionary* cardDictionary; 

@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; 

} 
+0

私はすでにcardDictionaryをプロパティとして宣言しています。これは私のために働いていません。それは私が他のクラスの - (NSDictionary *)parseDictionaryForCardPageを呼び出していることが原因でしょうか? – nicholjs

1

あなたは必ずあなたの2番目の呼び出し(parseDictionaryForCardPage)は、最初の呼び出し(findIndexForCardPage)であることをREQUESTMODELの同じインスタンスを使用していますか?

+0

はい、私は確信しています。私は両方のメソッドを呼び出して、ログに値を出力することでテストしました。しかし、別のクラスからparseDictionaryForCardPageを呼び出すと、これは機能しません。 – nicholjs

+0

私はもっとコードを見る必要があると思います。具体的には、最初の通話の方法と場所、2回目の通話の作成方法と場所。 – GriffeyDog

関連する問題