2013-07-18 4 views
0

У меня есть NSMutableArray, который сделал его инициализации, как следует:NSMutableArray всегда преобразования в NSArray

@interface Countries() 
{ 
    NSMutableArray *arrayofCountry; 
} 
@end 


- (void)viewDidLoad 
{ 
     //... 
     arrayofCountry=[[NSMutableArray alloc]init]; 
     //... 
} 

Тогда я хотел применить removeObjectAtIndex к этому NSMutableArray:

[arrayofCountry removeObjectAtIndex:sourceRow]; 

Проблема в том, что это сбой с этим журналом:

-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance 

Я проверял его с:

NSLog(NSStringFromClass([arrayofCountry class])); 

и оно возвращается __NSArrayI. Вопрос в том, как он был преобразован в NSArray? Я просто заселение его:

arrayofCountry=[JSON valueForKeyPath:@"country_name"]; 

Спасибо за вашу помощь.

+0

'arrayofCountry = [NSMutableArray массив];' – Desdenova

+1

Проблема заключается в вашем последнем бите кода. arrayOfCountry = [JSON valueForKeyPath: @ "country_name"]; НЕ заполняет его. Он заменяет его. –

ответ

3

Попробуйте это. Это создаст новый NSMutableArray на основе содержимого вашего другого массива.

arrayofCountry = [NSMutableArray arrayWithArray:[JSON valueForKeyPath:@"country_name"]]; 
+0

Он работал человеком, спасибо вам большое. – androniennn

+1

Если вам нужна сохраненная версия, вы можете сделать то же самое с [[NSMutablArray alloc] initWithArray:]; Если ответ DCGoD верен, отметьте его как таковой. – acorc

1

попробовать, как это,

arrayofCountry=(NSMutableArray *)[JSON valueForKeyPath:@"country_name"]; 

в качестве @ Ахмеда Мохаммеда: предложил попробовать, как этот путь

arrayofCountry=[[JSON valueForKeyPath:@"country_name"] mutableCopy]; 
+0

попробовал прямо сейчас, и он всегда рушится на 'removeObjectAtIndex'. – androniennn

+0

Вы получаете то же описание краха? – Balu

+3

литье указателя не изменяет класс базового объекта !! Вместо этого вы должны попробовать 'arrayofCountry = [[JSON valueForKeyPath: @" country_name "] mutableCopy];' –

2

Если значение, которое хранится в файле JSON с ключом country_name является NSArray, то он не может быть скопирован в NSMutableArray без изменения. Попробуйте сделать это:

arrayofCountry = [[JSON valueForKeyPath:@"country_name"] mutableCopy]; 

Кроме того, при создании NSMutableArray создать его, как это (вместо того, чтобы использовать Alloc и затем INIT):

arrayOfCountry = [NSMutableArray array]; 
+0

Хорошо, я попробую. – androniennn

+0

Он тоже работал. Поэтому проблема в том, что я получал массив из JSON и применял его к NSMutableArray. – androniennn

+0

Если бы я мог принять все три ответа: /. – androniennn

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