2011-07-11 17 views
0

nsdictionaryを初期化して配列に追加する際に問題があります。私は2つのアピーチを試みましたが、両方で失敗しました。私の辞書は常にnullです。NSDictionaryは常にnullを示します

Appoach1:

NSMutableDictionary *Data =[[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"State_Name",@"2",@"Name",@"3",@"Address",@"4",@"Ph", nil];// initialized in viewdidload 


-(void)find:(NSInteger)Item{ 


     switch (Item) { 
     case 0: 

      [Data setValue:string forKey:@"State_Name"]; 
      break; 
     case 1: 
      [Data setValue:string forKey:@"Name"]; 
      break; 
     case 2: 
      [Data setValue:string forKey:@"TAddress"]; 
      break; 
     case 3: 
      [Data setValue:string forKey:@"Ph"]; 
      break; 
     default: 
      break; 
    }   
} 

Approach2:

NSMutableDictionary *Data =[[NSMutableDictionary alloc] initWithObjectsAndKeys:str1,@"State_Name",str2,@"Name",str3,@"Address",str4,@"Ph", nil]; 

いただきました!このコードで間違っていずれかを言うことができます。 nsdictionaryを間違った方法で使用していますか?

ありがとうございました

+0

された場合配列? – aherlambang

+0

viewDidLoadコード全体を移植できますか? – edo42

+0

実際に動作しないコードや問題が発生している場所(NULLと思われるもの、それを考える理由)など、より多くのコードを投稿する必要があります。 – smorgan

答えて

1

コードが正しいように見えます。私の推測はstringです。 setValue:forKey:はnilを許可します(既存のオブジェクトを削除します)。
が、それはあなたの最初のアプローチに値(文字列)がnilの場合例外を発生させるか、文字列がnilであるかどうかを確認...

0

なり、setObject:forKey:を試してみてください。 正確に何があなたの鍵とどのような初期化子であなたの値になるようにspposedされます? 私はあなたに注文を混ぜているようです。

それ以外にも、文字列を辞書に入れても、スイッチ内のnsintegerを参照する必要があります。その間のどこかで変換を行っていますか?

+0

上記のポイントを追加すると、NSIntegerをオブジェクトとして保存する必要があると思います – aherlambang

+0

私はちょうどいくつかのランダムな値を入れて、スイッチの実際の値で置き換えようとしました。 – pa12

2

私は、あなたがしなければならないどのような変化をあなたのコード を実行している: - あなたの.hファイルの書き込みで : - あなたの.mファイルの書き込み中

NSMutableDictionary *Data; 

: -

Data =[[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"State_Name",@"2",@"Name",@"3",@"Address",@"4",@"Ph", nil];// initialized in viewdidload 
+0

合成の直後に.mのnsdictionaryを宣言しました。私たちはそうすることができないのですか? – pa12

+0

私はちょうどいくつかのランダムな値を入れて、スイッチの実際の値で置き換えようとしました。 – pa12

関連する問題