Как скопировать из NSMutableArray в NSMutableString? - PullRequest
0 голосов
/ 18 марта 2012

Я пытаюсь добавить несколько строк в NSMutableArray, чем хочу скопировать элемент 0 (ноль) из NSMutableArray в NSMutableString

[MS appendString:str]

эта строка вызывает ошибку.

в чем проблема? элемент MutableArray не может быть назначен NSString? (спасибо за любые ответы)

ошибка вывода:

Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__NSCFNumber length]: нераспознанный селектор отправлен в экземпляр 0x6c82440'

вот мой код:

NSMutableArray *A=[[NSMutableArray alloc]init];
NSMutableString *MS=[NSMutableString stringWithString:@"first"];

for (int i=0; i<=15;i+=2) {
    [A addObject:[NSNumber numberWithInteger:i]];
}

NSString *str;

for (int x=0; x<[A count]; x++) {
    str=[A objectAtIndex:0];
    [MS appendString:str];//ERROR HERE
}

[A release];

1 Ответ

2 голосов
/ 18 марта 2012

Вы добавляете NSNumber s к массиву, а не к строкам в следующей строке:

[A addObject:[NSNumber numberWithInteger:i]]; // here you are adding numbers

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

NSString *str;
NSNumber *number;

for (int x=0; x<[A count]; x++) {
    number = [A objectAtIndex:0]; // You should probably replace 0 by x here.
    str = [number stringValue]; // transform number into a string
    [MS appendString:str];
}

[A release];

Но если вы хотите, чтобы в массиве хранились строки, а не числа, замените первый цикл следующим:

for (int i=0; i<=15;i+=2) {
    [A addObject:[[NSNumber numberWithInteger:i] stringValue]];
}

Или

for (int i=0; i<=15;i+=2) {
    [A addObject:[NSString stringWithFormat:@"%d", i]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...