2

何が問題なのかわかりません。ここに私のコードがあります:

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

ご覧のとおり、アクティビティのセット (trainingSession の関係) を、アクティビティ内の activityIndex という名前のプロパティで並べ替えたいと考えています。アクティビティのインデックスは常に 0 以降です。つまり、trainSession.activities.count-1 を超えるインデックスはありません。

適切な容量の NSMutableArray を割り当てて並べ替えを行い、アクティビティを (1 回) 反復処理して正しいインデックスに挿入します。なんらかの理由で、このエラーが発生することを知りません:

キャッチされていない例外 'NSRangeException' が原因でアプリを終了しています。理由: ' * -[__NSArrayM insertObject:atIndex:]: インデックス 2 が空の配列の境界を超えています'

私は配列を保持しようとしましたが、それは問題ではありませんでした (そして問題ではありません)。

インデックスは正しい、カウントは正しい、何が問題なの??

4

2 に答える 2

6

の容量はarrayWithCapacity:、最適化のヒントにすぎません。配列のカウントはまだ 0 です。

于 2012-06-28T14:49:34.573 に答える