我照着obj-c编程这书里有段例子敲打了一段代码,原来的代码是对employees进行随机选择,使用了random方法,但是我现在想改成不随机,直接挨个从employees count里取,但是编译的结果出现了这个问题。
求问各位大神们,这是为什么呢,如果我想实现我的方法,该如何修改。

解决方案 »

  1.   

    这个代码当然有问题了,你应该知道计算机里的索引一般都是从0开始的,假设你的数组有10个元素(比如你的employee就有10个),那么可索引的范围就是0~9,但是这个数组元素的总数量是10个,如果你用10去数组里面索引,就会造成下标越界了(你目前的问题)。
    出问题的代码就在NSUinteger aaa = [employees count]那里。
      

  2.   

    那求问,为什么是用10去数组里面索引?应该用几去索引,我该如何修改才能实现我的目的?
    我不知道你这段代码是想做什么事情:

    以aaa为索引,取出employee对象,之前书上是用随机取,代码是:
    NSUInteger randomIndex=random()% [employees count];
    Employee *randomEmployee=[employees objectAtIndex:randomIndex];
    [randomEmployee addAssetsObject:asset];现在我不想随机了,想从0-9挨个取,所以才这么写。
      

  3.   

    那求问,为什么是用10去数组里面索引?应该用几去索引,我该如何修改才能实现我的目的?
    我不知道你这段代码是想做什么事情:

    以aaa为索引,取出employee对象,之前书上是用随机取,代码是:
    NSUInteger randomIndex=random()% [employees count];
    Employee *randomEmployee=[employees objectAtIndex:randomIndex];
    [randomEmployee addAssetsObject:asset];现在我不想随机了,想从0-9挨个取,所以才这么写。
    那就不需要aaa 这个变量了,直接用i 代替。
      

  4.   

    问题很明显,数组下标“越界”了。 在oc中,默认的数组下标是从0开始。如果有十条数据,它们对应的下标则是0-9, 如果以10为下标索引访问就会报出如上的错误。
    在for 循环中,你的i 累加器初始值是从0开始,所以可以用i 直接作为数组的下标索引来访问对应的数组元素