0

簡単にするために、View Controller 内の関数間でデータを共有するにはどうすればよいでしょうか? 理想的には、NSMutableDictionary を使用したいのですが、私のアプローチはうまくいかないようです (以下):

ViewController.m で:

- (void) viewDidLoad{
...
  NSMutableDictionary * movietem = [[NSMutableDictionary alloc] init];
  [movieItem setValue:@“frozen” forKey:@“title” ];
  [movieItem setValue:@“PG” forKey:@“rating” ];
  [movieItem setValue:@“tom cruise” forKey:@“cast” ];  
....
}

-(IBAction) updateTitleBtn:(UIButton *)sender{
…
  [movieItem setValue:@"lion king" forKey:@"title"];
...
} 


-(IBAction) updateCastBtn:(UIButton *)sender{
…
  [movieItem setValue:@"forest whitaker" forKey:@"cast"];
...
} 

エラーで終了: '不明な受信者 'movieItem'. 入力していただきありがとうございます。

4

4 に答える 4

2

movieItem は、それを作成した viewDidLoad メソッド内でのみ有効なローカル変数であるため、このエラーが発生します。ivar またはプロパティを作成する必要があります。

于 2014-07-11T05:50:54.050 に答える
1

movieitem はローカル変数であるため、他のメソッドでは使用できません。

したがって、メソッド間で変数を共有するより良い方法は、プロパティを宣言することです。

以下のコードを XXViewConttroller.m ファイルの先頭に追加してみてください。

@interface  XXViewConttroller()
@property(nonatomic,strong) NSMutableDictionary* movie;
@end

-(NSMutableDictionary*)movie{
   if(!_movie){
         _movie = [NSMutableDictionary dictionary];
   }
   return _movie;
}

.m ファイルで「プライベート プロパティ」を宣言し、プロパティのゲッターで変数を初期化しました。

self.movi​​e を使用して、コードの他の部分でプロパティを呼び出すことができます。

于 2014-07-11T06:19:03.980 に答える
0

movieItem はローカル変数であり、viewDidLoad メソッドのスコープ内でのみアクセスできます。別の関数でアクセスするには、グローバルにするか、プロパティを使用してください。

于 2014-07-11T05:54:02.450 に答える