Как изменить значения NSString внутри NSMutableArray? - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть изменяемый массив строк.Для этого примера, скажем, есть 2 строки в нем.

Операция, которую я хотел бы сделать, это взять первую строку и присвоить ей значение второй строки.

Я пытался что-то вроде этого:

- (void) someAction {
    NSMutableArray * array = [[NSMutableArray alloc] initWithObjects: string1, string2, nil];
    NSString * firstString = [array objectAtIndex:0];
    NSString * secondString = [array objectAtIndex:1];
    firstString = secondString;
}

Но этот метод, похоже, не работает.Как и после того, как я записываю эти две строки, они не меняются после операции.

Пожалуйста, сообщите.

1 Ответ

7 голосов
/ 04 февраля 2012

Вы не можете изменять строки в массиве подобным образом.

Массив содержит указатели на строки, и когда вы присваиваете одну строку другой, вы просто меняете указатели, а не изменяете строковый объект, которыймассив указывает на.

Что нужно сделать, чтобы поменять строку в массиве:

- (void) someAction {
    NSMutableArray * array = [[NSMutableArray alloc] initWithObjects: string1, string2, nil];
    NSString * secondString = [array objectAtIndex:1];
    [array replaceObjectAtIndex:0 withObject:secondString]; //replace first string with second string in the array
}
...