0

タイトルが奇妙に表現されている場合は申し訳ありませんが、それを言う方法がよくわかりません。オブジェクトの配列のコンテンツを JSON から別の配列に追加しているので、セクション化された UITableView を使用できます。ただし、removeAllObjects最初のセクションを十分に埋めたときに関数呼び出しを実行し、それらを配列に追加して、2 番目のセクションの読み込みを開始すると、最初のセクション全体が 2 番目のセクションに置き換えられます。NSMutableArray に問題がありますか、それとも私が考えていないことですか?

    weekScheduleArray = [[NSMutableArray alloc] initWithCapacity:2];
    NSMutableArray *temp = [[NSMutableArray alloc] init];
    for (int count = 0; count < [jsonObject count]; count++) {
        if (count < 7) {
            [temp addObject:[jsonObject objectAtIndex:count]];
        } else if (count == 7) {
            [weekScheduleArray addObject:temp];
            [temp removeAllObjects];
            [temp addObject:[jsonObject objectAtIndex:count]];
        } else {
            [temp addObject:[jsonObject objectAtIndex:count]];
        }
    }
    [weekScheduleArray addObject:temp];
4

2 に答える 2

1

呼び出しても、のコピーは追加され[weekScheduleArray addObject: temp] ません。配列自体を追加します。したがって、その後に続く場合、の配列も空になります。次の問題を回避できます。tempweekScheduleArrayremoveAllObjectstempweekScheduleArray

[weekScheduleArray addObject: [temp copy]];
于 2012-05-25T00:31:12.993 に答える
1

問題は、weekScheduleArrayに追加したのとまったく同じ可変配列を操作し続けていることです。これを解決する方法はたくさんあります。weekScheduleArrayに追加すると、コピーを作成できます。

[weekScheduleArray addObject:[temp copy]];

または、これを行うことができます:

[weekScheduleArray addObject:temp];
[temp release];
temp = [[NSMutableArray alloc] init];
[temp addObject:[jsonObject objectAtIndex:count]];

そして、forループが完了したら、tempを解放することを忘れないでください。

于 2012-05-25T00:33:21.047 に答える