将对象插入到数组中,直到iphone中的指定计数,然后将其推出以供以后添加

时间:2011-09-15 12:08:10

标签: objective-c nsmutablearray

我试图用对象填充数组直到指定的计数,当达到计数时,我不会将对象添加到数组中,我能够做到这一点。

但是我想要的是假设我已经给了第7个,并且&对象被添加到数组中,所以当我想要添加第8个对象时,应该推出对象和索引0,并且所有对象都应该采用它们的新位置来为新对象腾出空间。

所以朋友们怎么做呢

从下面的评论我试过这段代码

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

   [array1 insertObject:orderGroup atIndex:0 ] ;

它有效......

非常感谢你的朋友..

此致 兰吉特

3 个答案:

答案 0 :(得分:3)

-(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];
}

答案 1 :(得分:3)

听起来你想要的是一个循环缓冲区。通过数组实现的队列通常以这种方式实现 - 唯一的区别是队列调整大小,听起来你想要在它满了时出队,所以你保留了最新的X个项目。当你添加&删除项目,你想要改变所有顺序n - 相反,你只需要重新定义正面和背面的内容。

循环缓冲区是使用一定大小的数组实现的,你有两个索引变量 - head和tail。您还为项目计数维护一个变量。

从正面删除项目时,删除该项目并增加头部索引器。向后添加项目时,可以增加尾部索引器并添加。在这两种情况下,当你增加时,它可以环绕。您可以进行检查 - 如果索引位于最后一个单元格,设置为0,或者您可以使用模数运算。 index = index%[数组计数]。

答案 2 :(得分:0)

像这样。 arrayNSMutableArray

[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