Вставка объектов в массив до указанного числа в iphone, а затем выталкивание его для последующего добавления - PullRequest
0 голосов
/ 15 сентября 2011

Я пытаюсь заполнить массив объектами до указанного количества, и когда это количество будет достигнуто, я не буду добавлять объекты в массив, и я могу это сделать ..

Но чтоЯ хочу, чтобы я предположил, что я дал счет 7, и & объекты добавлены в массив, поэтому, когда я хочу добавить 8-й объект, объект и индекс 0 должны быть вытолкнуты, и все объекты должны занять свои новые позиции восвободить место для нового объекта.

Итак, друзья, как это можно сделать

из приведенных ниже комментариев Я попробовал этот код

if(count ==7)
    {
    [array1 removelastObject] ;
    }

   [array1 insertObject:orderGroup atIndex:0 ] ;

и все работает ...

Большое спасибо, друзья ..

С уважением, Ранджит

Ответы [ 3 ]

3 голосов
/ 15 сентября 2011

Звучит так, как будто вам нужен кольцевой буфер. Очереди, которые реализуются через массивы, обычно реализуются таким образом - единственное отличие состоит в том, что размер очереди изменяется. Похоже, вы хотите удалить очередь, когда она заполнена, поэтому вы сохраняете самое последнее количество элементов X. Когда вы добавляете и удаляете элементы, вы не хотите переместить все на порядок n - вместо этого вы просто продолжаете переопределять то, что является передним и задним.

Круговой буфер реализован с массивом определенного размера, и у вас есть две индексные переменные - head и tail. Вы также поддерживаете переменную для подсчета предметов.

Когда вы удаляете элемент спереди, вы удаляете элемент и увеличиваете индексатор головы. Когда вы добавляете элемент в конец, вы увеличиваете хвостовой индексатор и добавляете. В обоих случаях, когда вы увеличиваете, это может обернуться. Вы можете либо выполнить проверку - если индекс находится в последней ячейке, установить значение 0 или использовать операцию модуля. индекс = индекс% [количество массивов].

3 голосов
/ 15 сентября 2011
-(id)popAndPush:(id)newObject{
    id poppedObject = nil;
    if([array count]==maxCount){       /// remove first object (new count will be maxCount-1
        poppedObject = [[array removeObjectAtIndex:0] retain];
    }
    [array addObject:newObject];       /// push new object
    return [poppedObject autorelease];
}
0 голосов
/ 15 сентября 2011

Вот так.array является NSMutableArray

[array removeObjectAtIndex:0]; // All of your other objects will move down an index
[array addObject:myNewObject]; // This will be added to the end of your array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...