2016-02-05 9 views
0

Это мой пример кода здесь я вычисленное время перерыва в течение двух entries.if я добавить еще записи означает, что он перекрывая предыдущий раз перерыв ..Я не знаю, где я делаю неправильноNSMutableDictionary отменяет первое значение

This is my first sample i got this for 2 entries

This is my second sample i got this for 3 entries

Вот мой пример кода

NSMutableArray *arrData = [[data objectForKey:@"data"]mutableCopy]; 

       NSLog(@"%@",arrData); 
NSLog display this data before adding 3entry .. 
        { 
    date = "2016-01-20"; 
    "end_time" = "11:10:00"; 
    "function_code" = RCV; 
    "operator_id" = JOHN; 
    "start_time" = "11:00:00"; 
    "total_time" = 10; 
    "total_units" = 19; 
}, 
    { 
    date = "2016-01-20"; 
    "end_time" = "12:25:00"; 
    "function_code" = PIK; 
    "operator_id" = JOHN; 
    "start_time" = "12:15:00"; 
    "total_time" = 10; 
    "total_units" = 26; 
}) 



       NSMutableDictionary *thirdEntry = [NSMutableDictionary dictionary]; 

       [thirdEntry setObject:@"02:00:00" forKey:@"end_time"]; 
       [thirdEntry setObject:@"PUL" forKey:@"function_code"]; 
       [thirdEntry setObject:@"01:25:00" forKey:@"start_time"]; 
       [thirdEntry setObject:@"45" forKey:@"total_units"]; 
       [thirdEntry setObject:@"20" forKey:@"total_time"]; 
       [arrData addObject:thirdEntry]; 


       NSLog(@"%@",arrData); 



       //dictionary 
       NSMutableDictionary *dictData =[NSMutableDictionary dictionary]; 
       NSMutableDictionary *dictData1=[NSMutableDictionary dictionary]; 




       NSMutableArray *arrayProgressDate =[NSMutableArray array]; 

        //storing the breaktime values 

       NSMutableDictionary *dictValues =[NSMutableDictionary dictionary]; 


        for (int i =0; i<arrData.count; i++) { 

         dictData =arrData[i]; 

         [arrayProgressDate addObject:dictData]; 

         NSString *strendTime1 =[dictData objectForKey:@"end_time"]; 

         NSLog(@"%@",strendTime1); 



          [dictValues setObject:strendTime1 forKey:@"end_time_value"]; 




         if ((i + 1) < arrData.count) { 


          dictData1=arrData[i+1]; 



          NSString *strStartTimeNext = [dictData1 objectForKey:@"start_time"]; 

          NSLog(@"%@",strStartTimeNext 
           ); 
          //[arrayProgressDate addObject:strStartTimeNext]; 
          [dictValues setObject:strStartTimeNext forKey:@"start_time_value"]; 

          //calculating break time 

         NSDate *endTimeDate = [[DateHelper sharedHelper ] dateFromString:strendTime1 withFormat:@"HH:mm:ss"]; 
         NSDate *startTimeDate = [[DateHelper sharedHelper]dateFromString:strStartTimeNext withFormat:@"HH:mm:ss"]; 


          NSTimeInterval timeElapsedInSeconds = [endTimeDate timeIntervalSinceDate:startTimeDate]; 

         double hours = timeElapsedInSeconds/3600.0; 
          NSLog(@"%f",hours); 


         int breakTimeInMinutes = timeElapsedInSeconds/60; 
          breakTimeInMinutes =ABS(breakTimeInMinutes); 

          NSString *newStr =[NSString stringWithFormat:@"%i",breakTimeInMinutes]; 

          NSLog(@"%@",newStr); 

         [dictValues setObject:newStr forKey:@"break_time"]; 


          [arrayProgressDate addObject:dictValues]; 

         } 

         NSLog(@"%@",dictData); 



        } 




       NSLog(@"%@",arrayProgressDate); 

Пожалуйста, скажи мне, что я делаю неправильно в этом, я хочу рассчитать время разрыва.

+0

эй, я думаю, словарь, который вы добавили, который не является nsmutabledictionary, так что это не может быть изменено. вам нужно сделать им изменяемый словарь –

+0

@Sachin Patil, все словари, которые я использовал здесь, это только NSMutabledictionary. –

+0

Пожалуйста, скажите, что я делаю неправильно в этом случае, если у меня есть 2 записи, это правильный ответ, если наличие трех записей означает неправильное значение. пожалуйста, помогите мне сделать это –

ответ

0

Эта строка NSMutableDictionary * dictValues ​​= [словарь NSMutableDictionary]; должен быть внутри цикла.

При поиске времени перерыва вы также должны учитывать дату. В противном случае вы получите неправильные значения.

NSMutableDictionary *thirdEntry = [NSMutableDictionary dictionary]; 

[thirdEntry setObject:@"02:00:00" forKey:@"end_time"]; 
[thirdEntry setObject:@"PUL" forKey:@"function_code"]; 
[thirdEntry setObject:@"01:25:00" forKey:@"start_time"]; 
[thirdEntry setObject:@"45" forKey:@"total_units"]; 
[thirdEntry setObject:@"20" forKey:@"total_time"]; 
[arrData addObject:thirdEntry]; 


NSLog(@"%@",arrData); 



//dictionary 
NSMutableDictionary *dictData =[NSMutableDictionary dictionary]; 
NSMutableDictionary *dictData1=[NSMutableDictionary dictionary]; 




NSMutableArray *arrayProgressDate =[NSMutableArray array]; 


for (int i =0; i<arrData.count; i++) { 

    dictData =arrData[i]; 

    [arrayProgressDate addObject:dictData]; 

    NSString *strendTime1 =[dictData objectForKey:@"end_time"]; 

    NSLog(@"%@",strendTime1); 

    //storing the breaktime values 

    NSMutableDictionary *dictValues =[NSMutableDictionary dictionary]; 
    [dictValues setObject:strendTime1 forKey:@"end_time_value"]; 

    if ((i + 1) < arrData.count) { 


     dictData1=arrData[i+1]; 



     NSString *strStartTimeNext = [dictData1 objectForKey:@"start_time"]; 

     NSLog(@"%@",strStartTimeNext 
      ); 
     //[arrayProgressDate addObject:strStartTimeNext]; 
     [dictValues setObject:strStartTimeNext forKey:@"start_time_value"]; 

     //calculating break time 

     NSDate *endTimeDate = [[DateHelper sharedHelper ] dateFromString:strendTime1 withFormat:@"HH:mm:ss"]; 
     NSDate *startTimeDate = [[DateHelper sharedHelper]dateFromString:strStartTimeNext withFormat:@"HH:mm:ss"]; 


     NSTimeInterval timeElapsedInSeconds = [endTimeDate timeIntervalSinceDate:startTimeDate]; 

     double hours = timeElapsedInSeconds/3600.0; 
     NSLog(@"%f",hours); 


     int breakTimeInMinutes = timeElapsedInSeconds/60; 
     breakTimeInMinutes =ABS(breakTimeInMinutes); 

     NSString *newStr =[NSString stringWithFormat:@"%i",breakTimeInMinutes]; 

     NSLog(@"%@",newStr); 

     [dictValues setObject:newStr forKey:@"break_time"]; 


     [arrayProgressDate addObject:dictValues]; 

    } 

    NSLog(@"%@",dictData); 



} 
    NSLog(@"%@",arrayProgressDate); 
+0

, сделал ли у меня изменение, кроме NSMutablearray, в моем коде? –

+0

вы также должны рассмотреть дату и am/pm. –

+0

Зачем хранить дату/время как строки? – trojanfoe

 Смежные вопросы

  • Нет связанных вопросов^_^