将对象从一个NSMutableArray放到另一个NSMutableArray

时间:2013-01-31 19:28:56

标签: iphone objective-c nsmutablearray

我有2个NSMutableArrays,我想将某个对象形式1数组放到我已编写代码的另一个数组中,但它不起作用,它给了我这个错误: *由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [__ NSArrayM objectAtIndex:]:索引296超出边界[0 .. 295]' * 第一次抛出调用堆栈: (0x1c9a012 0x10d7e7e 0x1c3c0b4 0x2f04 0xb20b90 0x1c59376 0x1c58e06 0x1c40a82 0x1c3ff44 0x1c3fe1b 0x1bf47e3 0x1bf4668 0x1f65c 0x252d 0x2455) libc ++ abi.dylib:terminate调用抛出异常

viewdidload中的Initialisierung:

arrayLine1 =[[NSMutableArray alloc] initWithCapacity:80000];
    arrayLine1a =[[NSMutableArray alloc] initWithCapacity:70000];
    line1tagzahl=0;
    line1tagzahl2=0;

传递代码:

for (int a=0; a<10; ) {

            [arrayLine1a insertObject:[arrayLine1 objectAtIndex:line1tagzahl2] atIndex:line1tagzahl2];

            line1tagzahl2=line1tagzahl2+1;
            a=a+1;
        }

用于在数组中创建对象的函数(此函数被非常快速且频繁地调用):

for (float a=0; a<0.8; ) {
            UIImageView *line1 =[[UIImageView alloc] initWithFrame:CGRectMake(Startpoint1.center.x-(w/2),Startpoint1.center.y-kurve1yf+a,w,h)];
            line1.image=[UIImage imageNamed:@"Unbenannt"];
            line1.tag=line1tagzahl;
            [self.view addSubview:line1];
            [arrayLine1 insertObject:line1 atIndex:line1tagzahl];
            line1tagzahl=line1tagzahl+1;
            a=a+0.1;
        }

现在您应该有更多信息

4 个答案:

答案 0 :(得分:0)

  

如果你问我在array2中有超过10个对象

好像您还没有看过您发布的错误消息。数组中有296个对象。但是如果你只是想复制数组,你为什么不......呃......复制它?

NSMutableArray *secondArray = [firstArray mutableCopy];

答案 1 :(得分:0)

使用NSMutableArray类的默认方法-addObjectsFromArray:有什么问题吗?

- (void)serverGotResponse:(NSArray *)objects {
  [_myMutableArray addObjectsFromArray:objects];
}

答案 2 :(得分:0)

要防止越界异常,您应该使用count属性:

while (i < array.count) {
   // do something ..
   i++;
}

如果要复制所有对象,则可以复制整个数组:
array2 = [array1 copy]

答案 3 :(得分:-1)

您正在尝试添加前10个对象,但您的异常是在索引296上抛出的,这是第一个超出范围的索引。

出于某种原因,您的while条件无法正常工作,所以我建议您开始寻找

我还建议您使用for,它实际上比潜在的无限循环更简单明了

for (int a = 0; a < 10; a++) {
    [array1 insertObject:[array2 objectAtIndex:a] atIndex:a];
}