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

Objective c 将对象插入数组,直到iphone中的指定计数,然后将其推出以供以后添加,objective-c,nsmutablearray,Objective C,Nsmutablearray,我正在尝试用对象填充数组,直到达到指定的计数,当达到该计数时,我不会将对象添加到数组中,我可以这样做 但是我想要的是假设我已经给出了计数7,并且&对象被添加到数组中,所以当我想要添加第8个对象时,对象和索引0应该被推出,所有对象都应该占据它们的新位置,以便为新对象让位 朋友们,这怎么办 从下面的注释中,我尝试了这段代码 if(count ==7) { [array1 removelastObject] ; } [array1 insertObject:orderG

我正在尝试用对象填充数组,直到达到指定的计数,当达到该计数时,我不会将对象添加到数组中,我可以这样做

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

朋友们,这怎么办

从下面的注释中,我尝试了这段代码

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

   [array1 insertObject:orderGroup atIndex:0 ] ;
而且它是有效的

非常感谢朋友们

问候
兰吉特

喜欢这样
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

像这样
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

听起来你想要的是一个循环缓冲区。在阵列上实现的队列通常是这样实现的-唯一的区别是队列大小调整,听起来您希望在队列已满时退出队列,以便保留最近的X个项目数。在添加和删除项目时,您不希望将所有内容都按n的顺序移动-相反,您只需不断重新定义前面和后面的内容

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


从前面移除项目时,将移除该项目并增加头部索引器。将项目添加到后面时,将增加尾部索引器并添加。在这两种情况下,当您递增时,它可以环绕。您可以检查索引是否位于最后一个单元格,设置为0,也可以使用模运算。index=index%[array count]。

听起来你想要的是一个循环缓冲区。在阵列上实现的队列通常是这样实现的-唯一的区别是队列大小调整,听起来您希望在队列已满时退出队列,以便保留最近的X个项目数。在添加和删除项目时,您不希望将所有内容都按n的顺序移动-相反,您只需不断重新定义前面和后面的内容

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


从前面移除项目时,将移除该项目并增加头部索引器。将项目添加到后面时,将增加尾部索引器并添加。在这两种情况下,当您递增时,它可以环绕。您可以检查索引是否位于最后一个单元格,设置为0,也可以使用模运算。index=index%[array count]。

顺便说一句,我相信NSMutableArray是作为一个循环缓冲区在封面下实现的,所以删除和添加应该可以。事后看来,我们应该跳过详细的解释,只是像其他人一样说删除/添加。这里有一个使用NSMutableArray的循环缓冲impl:顺便说一句,我相信NSMutableArray是作为循环缓冲实现的,所以删除和添加应该可以。事后看来,我们应该跳过详细的解释,像其他人一样只说remove/add。下面是一个使用NSMutableArray的循环缓冲区impl:我想您可能只想用if max检查来包围remove。似乎你总是想添加。谢谢,编辑。初始块仅用于达到maxCount时。嘿,babbidi,如果我在索引0中插入对象,您的逻辑会正确失败吗?如果您想在0中插入对象,您将使用cal
[array removeObjectAtIndex:maxCount-1]
而不是
[array removeObjectAtIndex:0]
[array insertObject:newObject atIndex:0]
而不是
[array addObject:newObject]
。我想您可能只想用if max检查来包围remove。似乎你总是想添加。谢谢,编辑。初始块仅用于达到maxCount时。嘿,babbidi,如果我在索引0中插入对象,您的逻辑会正确失败吗?如果您想在0中插入对象,您将使用cal
[array removeObjectAtIndex:maxCount-1]
而不是
[array removeObjectAtIndex:0]
[array insertObject:newObject atIndex:0]
而不是
[array addObject:newObject]