массивы не добавляются в nsmutabledictionary - PullRequest
0 голосов
/ 04 декабря 2010

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

Может ли любое тело помочь мне, пожалуйста ..

спасибо.

- (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]);

    }

Ответы [ 2 ]

3 голосов
/ 04 декабря 2010

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

1 голос
/ 04 декабря 2010

вслепую верно, но здесь больше проблем:

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

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

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

...