2012-01-20 2 views
0

Невозможно добавить NSmutableDictionary в NSmutableArray, действияFeedArray - изменяемый массив и инициализируется в файле заголовка.Невозможно добавить NSmutableDictionary в NSmutable Array

  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

Где находится деятельностьFeedArray? Это не похоже, что вы его инициализировали в любом месте. – user1118321

+2

"activitiesFeedArray - изменяемый массив и инициализируется в файле заголовка." Как вы инициализируетесь в файле заголовка? Это невозможно, поэтому я скажу, что ваша проблема заключается в том, что activityFeedArray никогда не получает intialized –

+0

раз размещения вашего viewDidLoad? –

ответ

1

Если это единственный код, у вас есть, то он должен работать нормально и NSLog вашего NSMutableArray не должен возвращать ноль. Я скопировал и вставил ваш код на свой XCode, и он отлично работает. Вы должны делать что-то еще в своем коде, чтобы изменить NSMutableArray.


Если вам интересно то, что я сделал, чтобы доказать, что ваш код работает, я создал простой UIViewController с помощью одной кнопки в нем. Затем я создал класс UIViewController и буквально скопировал ваш код в файле заголовка и файле реализации. Я объявил NSMutableArray в файле заголовка и инициализировал его в viewdidload (я скопировал и вставил их как есть). Я также поместил остальную часть вашего кода NSMutableDictionary в viewDidLoad и дал разумные результаты. Журнал NSMutableArray показывает, что он содержит правильные данные.

Иногда это помогает сделать чистую сборку, но, насколько я могу вам судить, ваш код правильный и должен работать.

Кстати, у меня IOS5 и XCode 4.2.

+1

+1, Таким образом, ошибка лежит в другом месте. @ShahidAslam, где еще у вас есть код формы «activitiesFeedArray = ...»? –

+0

перезапуск и чистая сборка разрешить его, спасибо всем –

1

Заменить [dummyitem2 setValue: dummyitem forKey: @ "Title"]; с [dummyitem2 setObject: dummyitem forKey: @ "Title"];

+0

Зачем вы предлагаете это? Я не понимаю, как это может повлиять. – Chuck

2

Вы не упомянули, где этот код, но он явно работает некоторое время до viewDidLoad, поэтому массив равен nil.

+0

@MattyG: Почему, на ваш взгляд, это может вызвать исключение? '[nil count]' просто возвращает 0 (как и любое другое сообщение в nil). – Chuck

+0

мой плохой, ты прав. – MattyG

Смежные вопросы