2013-06-12 3 views
0

, когда я установить значение в NSMutableDictionary затем данное шоу ошибки в изображении ниже ....- [__ NSDictionaryI SetObject: forKey]: непризнанный селектор направлен например 0x91da0f0

enter image description here

вот мой код SetValue в NSMutableDictionary

NSMutableArray *countArray=[[NSMutableArray alloc] init]; 
for (int i=0;i<artistName.count;i++) 
{ 
    int count=0; 
    NSMutableDictionary *dir1=[artistName objectAtIndex:i]; 
    NSString *artist1=[dir1 objectForKey:@"SONG_ARTIST"]; 

    for (int j=0;j<CurrentPlayingSong.count;j++) 
    { 
     NSDictionary *dir2=[CurrentPlayingSong objectAtIndex:j]; 
     NSString *artist2=[dir2 objectForKey:@"SONG_ARTIST"]; 

     if ([artist2 isEqualToString:artist1]) 
     { 
      count++; 
     } 
    } 

    NSString *Size=[[NSString alloc] initWithFormat:@"%d",count]; 
    [dir1 setObject:Size forKey:@"SIZE"]; 

    [countArray addObject:dir1]; 
} 
return countArray; 
+0

Сообщение об ошибке совершенно очевидно, вы бы сэкономили несколько минут, если вы его запустили. Голосование за закрытие, нет необходимости в дополнительных попытках. –

+0

Возможный дубликат [NSDictionaryI setObject: forKey: \]: непризнанный селектор, отправленный экземпляру] (http://stackoverflow.com/questions/14731353/nsdictionaryi-setobjectforkey-unrecognized-selector-sent-to-instance) –

+0

Изменение PLS NSString как NSMutableString, затем попробуйте – manujmv

ответ

8

это NSMutableDictionary *dir1=[artistName objectAtIndex:i]; возвращает NSDictionary объект, который превращает ваш dir1 к тому же типу.

лучший способ сделать что-то вроде этого:

NSMutableDictionary *dir1=[NSMutableDictionary dictionaryWithDictionary:[artistName objectAtIndex:i]]; 

или

NSMutableDictionary *dir1 = [artistName[i] mutableCopy]; 

Это будет гарантировать, что dir1 всегда будет NSMutableDictionary.

надеюсь, что это поможет

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