Почему я получаю предупреждение о несовместимом типе указателя NSMutableArray?

#objective-c #nsmutablearray

#objective-c #nsmutablearray

Вопрос:

Я получаю простую текстовую строку на своем iPad и пытаюсь просто преобразовать ее в табличное представление, но получаю следующее предупреждение:

 "Incompatible pointer type assigning to 'NSMutableArray*' from 'NSArray'"
  

Итак, controller.h

 NSMutableArray *homeData;
@property (nonatomic, retain) NSMutableArray *homeData;
  

затем controller.m

 @synthesize homeData;
  

за которым следует

 [searchData appendData:data];
NSString *searchString = [[NSString alloc] initWithData:searchData encoding:NSUTF8StringEncoding];
NSArray *sectionString = [searchString componentsSeparatedByString:@";;"];
homeData = [[[sectionString objectAtIndex:0] componentsSeparatedByString:@";"] retain];

(data = 'no_home;;no_locl;;no_natl;;9:CHardaker;;')
  

При нормальных обстоятельствах строка будет содержать список номеров индексов и сокращенных имен, вплоть до 100.

Я получаю предупреждение в последней строке homeData. Я ожидал бы, что это homeData objectAtIndex:0 должно быть no_home , однако это не так, и это единственная нерешенная проблема при выполнении.

Ответ №1:

componentsSeparatedByString: возвращает an NSArray , а не an NSMutableArray . Если вам нужен изменяемый вариант, измените последнюю строку на:

 homeData = [[[sectionString objectAtIndex:0] componentsSeparatedByString:@";"] mutableCopy];