2012-01-20 10 views
0

NSmutableArrayをNSmutableArrayに追加できませんでした。activitiesFeedArrayは可変配列であり、ヘッダファイルで初期化されました。NSmutableDictionaryをNSmutable配列に追加できません

  NSMutableDictionary *dummyitem = [[NSMutableDictionary alloc]init]; 
      NSMutableDictionary *dummyitem2 = [[NSMutableDictionary alloc]init]; 
      NSMutableDictionary *dummyitem3 = [[NSMutableDictionary alloc]init]; 

      [dummyitem setObject:@"No Data Found" forKey:@"text"]; 
      [dummyitem2 setValue:dummyitem forKey:@"Title"]; 
      [dummyitem3 setObject:dummyitem2 forKey:@"ItemInfo"]; 

      NSLog(@"%@",dummyitem3); 

      //dummyitem3 logs correct value here    

      if ([activitiesFeedArray count] == 0) 
      { 
       NSLog(@"%@",dummyitem3); 
       //dummyitem3 logs correct value here 
       [activitiesFeedArray addObject:dummyitem3]; 
       NSLog(@"%@",activitiesFeedArray); 
       //activitiesFeedArray logs null value here 
      } 

Viewdid負荷

(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    activitiesFeedArray = [[NSMutableArray alloc]init]; 
} 

ヘッダーファイル

@interface SearchViewController : UIViewController <UISearchBarDelegate ,UITableViewDelegate , UITableViewDataSource> 
{ 
    NSMutableArray *activitiesFeedArray; 
} 
@end 
+0

activitiesFeedArrayはどこに割り当てられていますか?どこにでも初期化したようには見えません。 – user1118321

+2

"activitiesFeedArrayは可変配列であり、ヘッダーファイルで初期化されます。"ヘッダーファイルでどのように初期化しますか?それは可能ではないので、あなたの問題はactivitiesFeedArrayが初期化されないと言うでしょう –

+0

あなたのviewDidLoadをポスティングしていますか? –

答えて

1

これはあなたが持っている唯一のコードがある場合は、それが正常に動作する必要がありますし、あなたのNSMutableArrayのののNSLogがnilを返すべきではありません。自分のコードをコピーして自分のXCodeに貼り付けると、完全に動作します。 NSMutableArrayを変更するには、コード内の別の場所で行う必要があります。


あなたは私はあなたのコードが動作することを証明するために何をしたか興味があれば、私はその中にボタン一つで簡単なのUIViewControllerを作成しました。その後、UIViewControllerクラスを作成し、ヘッダーファイルと実装ファイルにコードをそのままコピーしました。ヘッダーファイルにNSMutableArrayを宣言し、viewdidloadで初期化しました(そのままコピーして貼り付けました)。私はまた、あなたのNSMutableDictionaryコードの残りの部分をviewDidLoadに入れて、賢明な結果を得ました。 NSMutableArrayログには、正しいデータが含まれていることが示されています。

時にはクリーンなビルドを行うのに役立ちますが、私の言う限りでは、コードは正しいので、動作するはずです。

ところで、私はIOS5とXCode 4.2を持っています。

+1

+1、要するに、このバグは他の場所にあります。 @ ShahidAslam他に、 "activitiesFeedArray = ..."という形式のコードがありますか? –

+0

再起動してクリーンビルドで解決してください、ありがとうございます –

1

[dummyitem2 setValue:dummyitem forKey:@ "Title"]を置き換えます。 with [dummyitem2 setObject:dummyitem forKey:@ "Title"];

+0

なぜこれをお勧めしますか?私はそれがどのような違いを生むかは分かりません。 – Chuck

2

あなたはそのコードがどこにあるかは言及していませんが、viewDidLoadの前にはっきりと実行されているので、配列はstil nilです。

+0

@MattyG:なぜ地球上で例外が発生すると思いますか? '[nil count]'は0を返すだけです(他のすべてのメッセージと同様にnilになります)。 – Chuck

+0

私の悪い、あなたが正しいです。 – MattyG