removeAllObjects
函数调用时,将它们添加到我的数组中,然后开始加载第二部分,这会导致整个第一部分被第二部分替换部分。 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];
答案 0 :(得分:1)
致电[weekScheduleArray addObject: temp]
不将temp
的副本添加到weekScheduleArray
;它添加了数组本身。因此,当您随后removeAllObjects
temp
时,weekScheduleArray
中的数组也为空。您可以通过以下方式避免此问题:
[weekScheduleArray addObject: [temp copy]];
答案 1 :(得分:1)
问题是你正在继续操作刚刚添加到weekScheduleArray中的完全相同的可变数组。有很多方法可以解决这个问题。将它添加到weekScheduleArray时可以创建副本:
[weekScheduleArray addObject:[temp copy]];
或者你可以这样做:
[weekScheduleArray addObject:temp];
[temp release];
temp = [[NSMutableArray alloc] init];
[temp addObject:[jsonObject objectAtIndex:count]];
然后当你完成你的for循环时,记得释放temp。