Удаление объекта из NSMutableArray - PullRequest
2 голосов
/ 02 марта 2012

Я пытаюсь удалить объект с индексом 1, но код не скомпилируется.

Я тоже не понимаю этого: я установил строку «iphone» в индекс 0, после этого я удалил ее из индекса 0, но на выходе все равно сначала отображается «iphone». Кто-нибудь может мне это объяснить?

int main (int argc, const char * argv[])
{    
    @autoreleasepool {

        //create three string objetc
        NSString *banana  = @"This is banana";
        NSString *apple = @"This is apple";
        NSString *iphone =@"This is iPhone";

        //create  an empty array
        NSMutableArray *itemList = [NSMutableArray array];

        // add the item to the array
        [itemList addObject:banana];
        [itemList addObject:apple];

        // put the iphone to the at first

        [itemList insertObject:iphone atIndex:0];

        for (NSString *l in itemList) {
            NSLog(@"The  Item in the list is %@",l);
        }
        [itemList removeObject:0];
        [itemList removeObject:1];// this is not allow  it

        NSLog(@"now the first item in the list is %@",[itemList objectAtIndex:0]);
        NSLog(@"now the second time in the list is %@",[itemList objectAtIndex:1]);
        NSLog(@"now the thrid item in the list is %@",[itemList objectAtIndex:2]);

    }
    return 0;
}

Ответы [ 4 ]

9 голосов
/ 02 марта 2012

Это должно быть

[itemList removeObjectAtIndex:0];
[itemList removeObjectAtIndex:1];

Этот метод четко указан в документации для NSMutableArray.Пожалуйста, всегда обращайтесь к соответствующей документации, прежде чем задать вопрос.

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

Вы используете removeObject вместо removeObjectAtIndex.

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

Использование:

[itemList removeObjectAtIndex:0];

Вот подробное руководство NSMutableArray.

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

Метод removeObject:(id)obj работает не с индексами, а с реальными объектами.

Вы должны использовать вместо

[list removeObjectAtIndex:0];
[list removeObjectAtIndex:1];

Если вам интересно, почему он работает с 0, я думаю, что 0 == NULL == nil, который является указателем на нулевой объект, поэтому он интерпретируется как нулевой объект, а не как индекс (он не будет вести себя так, как вы ожидать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...