2010-12-04 1 views
0

Я добавляю массивы в nsmutabledictionary, но его значение 0 count Я выделил словарь в методе viewDidLoad.массивы не добавляют к nsmutabledictionary

любой орган может помочь мне пожалуйста ..

спасибо.

- (void)creatingDictionary{ 

     songsDict = nil; 
     NSMutableArray *hrSongs = [[NSMutableArray alloc]init]; 
     for(int i=0;i<[onAirSongs count];i++){ 
      for(int j=i;j<[onAirSongs count];j++){ 
       Song *a1 =(Song *)[onAirSongs objectAtIndex:i]; 
       Song *a2 =(Song *)[onAirSongs objectAtIndex:j]; 
       if(a1.cellId == a2.cellId) 
        [hrSongs addObject:a2]; 
       else{ 
        [songsDict setObject:hrSongs forKey:[NSString stringWithFormat:@"%d",i]];       
        hrSongs = nil; 
        i=j-1; 
        break; 
       } 
      }//inner for 
     }//out for 
     [hrSongs release]; 
     NSLog(@"songsdictionary count....%d",[songsDict count]); 

    } 

ответ

3

Вы устанавливаете songDict на ноль. Вы не можете добавить массив в словарь, который не существует.

+0

Хех. Если он только это исправит, все равно будет ошибкой. Ах хорошо. – bbum

1

blindJesse правильно, но есть больше проблем здесь:

  1. Вы настраиваете songsDict к нулю. В Objective-C, nil-ats-messages и, таким образом, вы молча ничего не делаете, когда вы [songsDict setObject:.....].

  2. В середине цикла вы найдете hrSongs = nil;. Последующие итерации через петлю с радостью вызовут addObject: на ноль, ничего не делая.

  3. Все это кажется странным; что делает onAirSongs? Клетки? Похоже, что на самом деле вы не сохранили никакого разделения Model-View-Controller. Это может работы, но вы находитесь в тяжелой головной боли обслуживания в будущем, если вам когда-либо придется изменить свой интерфейс.

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