jsonエンコードされたイベントのNSDictionary
を解析し、その月に基づいて2次元のNSMutableArray
に配置しています。NSMutableArrayをループから別のものに追加すると複製が作成される
私は配列に項目を追加してループ内の配列(event_container
)に配列を配置しているので、正しい配列数が表示されますが、すべてが最後の繰り返しと重複しているようですevent_container
の内容は同じ配列です。
私はこれがポインタであり、リリースされていないためだと思います。私はこれを回避するための適切な方法がないか、場合によってはより良い解決策であるとは確信しています。私はARCを使用しています。
int month = 0;
int current_month = 0;
int counter = 0;
event_container = [[NSMutableArray alloc] init];
temp_array = [[NSMutableArray alloc] init];
for (NSDictionary *result in results)
{
NCEvent *anEvent = [[NCEvent alloc] init];
anEvent.title = [result objectForKey:@"title"];
anEvent.startdate = [result objectForKey:@"startdate"];
anEvent.enddate = [result objectForKey:@"enddate"];
NSDateFormatter *importDate = [[NSDateFormatter alloc] init];
[importDate setDateFormat:@"yyyy-M-d H:m:ss"];
anEvent.dateStart = [importDate dateFromString:anEvent.startdate];
anEvent.dateEnd = [importDate dateFromString: anEvent.enddate];
NSDateFormatter *exportDate = [[NSDateFormatter alloc] init];
[exportDate setDateFormat:@"d"];
anEvent.text_date = [exportDate stringFromDate: anEvent.dateStart];
NSDateFormatter *exportMon = [[NSDateFormatter alloc] init];
[exportMon setDateFormat:@"MMM"];
anEvent.text_mon = [exportMon stringFromDate: anEvent.dateStart];
NSDateFormatter *monthInt = [[NSDateFormatter alloc] init];
[monthInt setDateFormat:@"M"];
month = [[monthInt stringFromDate: anEvent.dateStart] intValue];
if(counter == 1){ //first month
current_month = month;
NSLog(@"I'm the first month: %i", month);
[temp_array addObject:anEvent];
}
else if(month > current_month){ //new month
NSLog(@"This is a new month");
current_month = month;
//add the events array to events container and reset the events array
[self.event_container addObject: temp_array];
[temp_array removeAllObjects];
[temp_array addObject:anEvent];
}
else{
NSLog(@"Same Month"); //same month
[temp_array addObject:anEvent];
}
NSLog(@"Event month integer: %i", month);
anEvent = nil;
counter++;
}
これらの配列プロパティとして宣言されている:ポインタであるアレイ約
@property (nonatomic, retain) NSMutableArray *event_container;
@property (nonatomic, retain) NSMutableArray *temp_array;
すぎてループ内のコードのこの全体の塊ですか? –
いいえ、関与している唯一のループです –