У меня есть NSMutableArray
примерно так:
NSMutableArray *value = [productionSchedule valueForKeyPath:@"Value"];
При заполнении этого NSMutableArray
может иметь 900 строк или просто 8 или 12, Нет способа узнать, так что я пытаюсьdo - обработать первые 15 строк, а затем следующие 15 строк и т. д. до тех пор, пока это не будет сделано.
Я могу обработать первые 15 строк следующим образом:
for(int i = 0; i < 15; i++)
{
}
Но затемкак бы обработать следующие 15 из NSMutableArray
?
Вот полный цикл, о котором идет речь:
for(int i = 0; i< [prodSchedSortedKeys count]; i++)
{
NSMutableArray *valueArray = [[NSMutableArray alloc]init];
NSArray *baseLineFinishArray = [value objectAtIndex:i];
for(int j = 0 ;j< [newTaskData count]; j++)
{
ProductionCellData *pModel = [[ProductionCellData alloc]init];
if([[[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"] isEqual: @"Closing Date"])
{
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd h:mm:ss a"];
pModel.baseLineStart = [self SetSpecialDateFormat:[dateFormatter dateFromString:[[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"]]WithOption:0];
pModel.taskItem = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"];
[valueArray addObject: pModel];
}
else if([[[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"] isEqual: @"Days To Closing"])
{
[pModel setCellColor:[self SetCellColor:[[[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"] intValue]]];
pModel.baseLineStart = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"];
pModel.taskItem = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"];
[valueArray addObject: pModel];
}
else if([[[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"] isEqual: @"Schedule Variance"])
{
[pModel setCellColor:[self SetCellColor:[[[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"] intValue]]];
pModel.baseLineStart = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"];
pModel.taskItem = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"];
[valueArray addObject: pModel];
}
else if([[[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"] isEqual: @"Days Of Construction"])
{
[pModel setCellColor:[self SetCellColor:[[[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"] intValue]]];
pModel.baseLineStart = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"];
pModel.taskItem = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"];
[valueArray addObject: pModel];
}
else if([[[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"] isEqual: @"NOTES"])
{
pModel.baseLineStart = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"];
pModel.taskItem = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"];
[valueArray addObject: pModel];
}
else if([[[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"] isEqual: @"PDI To Close"])
{
[pModel setCellColor:[self SetCellColor:[[[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"] intValue]]];
pModel.baseLineStart = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"];
pModel.taskItem = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"];
[valueArray addObject: pModel];
}
else
{
[pModel setTextCol:[self SetTextColor:[baseLineFinishArray objectAtIndex:j]]];
[pModel setCellColor:[self SetCellColor:[self DateDifference:[baseLineFinishArray objectAtIndex:j]]]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd h:mm:ss a"];
pModel.baseLineStart = [self SetSpecialDateFormat:[dateFormatter dateFromString:[[baseLineFinishArray objectAtIndex:j] valueForKey:@"baselinefinish"]]WithOption:0];
pModel.actualFinish = [self SetSpecialDateFormat:[dateFormatter dateFromString:[[baseLineFinishArray objectAtIndex:j] valueForKey:@"actualenddate"]]WithOption:0];
pModel.taskItem = [[baseLineFinishArray objectAtIndex:j] valueForKey:@"task"];
[valueArray addObject:pModel];
[dateFormatter release]; dateFormatter=nil;
}
[pModel release];
pModel = nil;
}
[finalProductionSchedule setObject:valueArray forKey:[prodSchedSortedKeys objectAtIndex:i]];
[valueArray release];
valueArray = nil;
}
[prodSchedSortedKeys count]
может быть больше 900, или просто 12, это количествоколичества строк данных.
После некоторой отладки я определил, что это все замедляет и занимает память:
- (NSString *)SetSpecialDateFormat:(NSString *)date
{
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"dd-MM-yyyy"];
NSString *theDate = date;
NSArray *array = [theDate componentsSeparatedByString:@" "];
dateFormat = nil;
return [array objectAtIndex:0];
}