NSMutableArray removeObjectAtIndex, но тогда мне нужно двигаться вниз - PullRequest
0 голосов
/ 11 июля 2011

All

У меня есть строки, хранящиеся в NSMutableArray. Когда в другом месте кода выполняется определенное условие, объект, который является ПЕРВЫМ в NSMutableArray (read, objectAtIndex: 0), удаляется. После того, как он удален, мне нужно сместить все вниз по индексу. Вот мой пример:

/*
    Index/Value
    0 - one
    1 - two
    2 - three
    3 - four
    4 - five
    5 - six
    6 - seven
*/
//removes object...
[mArray removeObjectAtIndex:0];
//I am missing something here...


//I want the value of the array to be as follows:
/*
    Index/Value
    0 - two
    1 - three
    2 - four
    3 - five
    4 - six
    5 - seven
*/

Чего мне не хватает?

РЕДАКТИРОВАТЬ: NSMutableArray хранится в NSUserDefaults. Это может быть причиной того, что это не работает?

EDIT2: поскольку он хранится в NSUserDefaults, он изменяется на неизменяемый. Проверьте принятый ответ для правильного способа сделать это. Подробности здесь: вылетает мое приложение [NSMutableArray1 removeAllObjects] iphone sdk

Ответы [ 3 ]

7 голосов
/ 11 июля 2011

Ты ничего не пропустил. Индексы будут точно такими же после удаления объекта с индексом 0.

6 голосов
/ 11 июля 2011

Если я правильно понимаю вашу проблему, вы сохраняете NSMutableArray в NSUserDefaults, а затем при загрузке из NSUserDefaults выдает ошибку при попытке изменить?

Это потому, чтокогда вы извлекаете массив из NSUserDefaults, это будет экземпляр NSArray, а не NSMutableArray, поэтому вам нужно создать экземпляр NSMutableArray для работы.

NSMutableArray *mArray = [[NSMutableArray alloc] initWithArray:myArrayFromNSUserDefaults];
0 голосов
/ 11 июля 2011

Это должно работать.Вы делаете что-то подобное?

    NSMutableArray *mArray = [[NSMutableArray alloc]init];
    [mArray addObject:@"one"];
    [mArray addObject:@"two"];
    [mArray addObject:@"three"];

    [mArray removeObjectAtIndex:0];

    NSLog(@"mArray at 0: %@",[mArray objectAtIndex:0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...