奇怪的索引2超出空数组错误的界限

时间:2012-06-28 14:46:34

标签: iphone objective-c ios nsmutablearray

我似乎无法找到错误。这是我的代码:

NSMutableArray *sortedActivities = [NSMutableArray arrayWithCapacity:self.trainingSession.activities.count];
for (ManagedActivity *activity in self.trainingSession.activities)
    [sortedActivities insertObject:activity atIndex:[activity.activityIndex unsignedIntegerValue]];

如您所见,我想通过活动中名为activityIndex的属性对活动集(在trainingSession中的关系)进行排序。活动的索引始终从0开始,这意味着没有索引超过trainSession.activities.count-1。

我通过分配具有适当容量的NSMutableArray进行排序,然后迭代活动(一次)并将它们插入到正确的索引中。由于某种原因,我不知道我得到这个错误:

由于未捕获的异常'NSRangeException'而终止应用程序,原因:' * - [__ NSArrayM insertObject:atIndex:]:索引2超出空数组的边界'

我试着保留阵列,这没关系(并且应该没关系)。

索引是否正确,计数是否正确,有什么问题?

2 个答案:

答案 0 :(得分:6)

arrayWithCapacity:中的容量只是优化的提示。该数组的计数仍为0。

答案 1 :(得分:0)

请检查您的阵列计数是否在第2位获取项目