Objective-C NSMutableArray обрабатывает 15 элементов одновременно - PullRequest
0 голосов
/ 04 июня 2018

У меня есть 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...