2014-11-14 2 views
0

У меня были данные в моем UITableView с четырьмя ярлыками (проект, задачи, подзадачи и часы), я поменял свои данные из бэкэнд (перешел в базу данных и изменил данные). Я изменил количество часов с 12 до 10. Но я видел только старые данные (12 часов вместо 10 часов) в UITableView. Может ли кто-нибудь предположить, в чем причина этого. Я попытался очистить, перезагрузить компьютер, который не загружает правильные данные, находящиеся в базе данных. Другая вещь, которую я могу добавить, - это получение данных с помощью веб-сервиса. и преобразование данных из формата JSONSerialization в NSArray. Когда я просматриваю свою веб-службу в URL-адресе браузера, она дает мне правильные данные. Вот код ниже:Не удалось перезагрузить UItableview

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 

    [self loadprojects]; 


} 

NSString *strwebsite = [[NSUserDefaults standardUserDefaults] valueForKey:@"website"]; 
    NSString *websitemethods = @"Timesheet.svc/GetTimesheet"; 
    NSString *projecturltemp = [strwebsite stringByAppendingString:websitemethods]; 
    NSString *str = [[NSUserDefaults standardUserDefaults] valueForKey:@"UserLoginIdSession"]; 
    NSString *usrid = str; 
    NSString * projecturl =[NSString stringWithFormat:@"%@/%@/%@",projecturltemp,usrid,eventDate]; 
    NSURL *url = [NSURL URLWithString:projecturl]; 
    [self.tableView reloadData]; 
    NSLog(@"url : %@", url); 
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 




    NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]]; 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setURL:url]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"application/projectpicker" forHTTPHeaderField:@"Accept"]; 
    [request setValue:@"application/jsonArray" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:postData]; 


    NSError *error = [[NSError alloc] init]; 
    NSHTTPURLResponse *response = nil; 
    NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
    //NSLog(@"urlData : %@",urlData); 
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url 
               cachePolicy:NSURLRequestReturnCacheDataElseLoad 
              timeoutInterval:30]; 


    // Make synchronous request 
    urlData = [NSURLConnection sendSynchronousRequest:urlRequest 
            returningResponse:&response 
               error:&error]; 
    if ([response statusCode] >= 200 && [response statusCode] < 300) 
    { 
     NSString *responseDatatest = [NSJSONSerialization JSONObjectWithData:urlData 
                   options:NSJSONReadingAllowFragments error:&error]; 
     NSLog(@"responseDatatest : %@",responseDatatest); 

     NSArray *entries = [NSJSONSerialization JSONObjectWithData:[responseDatatest dataUsingEncoding:NSUTF8StringEncoding] 
                  options:0 error:&error]; 
     NSLog(@"Entries : %@", entries); 
     if(!entries) 
     { 
      NSLog(@"Error : %@", error); 
     } 
     else{ 

      for (NSDictionary *entry in entries) { 
       projectNames = [entries valueForKey:@"NM_PROJECT"]; 
       taskNames = [entries valueForKey:@"TASk_NAME"]; 
       subtaskNames = [entries valueForKey:@"SUBTASK_NAME"]; 
       timesheetid = [entries valueForKey:@"ID_TIMESHEET_DTLS"]; 
       projId = [entries valueForKey:@"ID_PROJECT"]; 
       taskId = [entries valueForKey:@"ID_TASK"]; 
       subtaskId = [entries valueForKey:@"ID_SUB_TASK"]; 
       totalhours = [entries valueForKey:@"No_Hours"]; 
       approve = [entries valueForKey:@"FL_APPROVE"]; 
       leaves = [entries valueForKey:@"NM_LEAVE"]; 
      } 
     } 

    }  else { 

    } 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
#warning Potentially incomplete method implementation. 
    // Return the number of sections. 
    return 1; 
} 

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [projectNames count]; 

} 

-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    static NSString *identitifier = @"Cell"; 
    TableViewCell * cell = [tableView 
           dequeueReusableCellWithIdentifier:identitifier 
           forIndexPath:indexPath]; 

    if ([[[timesheetid objectAtIndex:indexPath.row] stringValue] isEqualToString:@"0"]) 
    { 
     cell.lblProjects.text = [NSString stringWithFormat:@"%@",@"No Projects Filled"]; 
     cell.lblTasks.text = [NSString stringWithFormat:@"%@",@"No Tasks Filled"]; 
     cell.lblSubTasks.text = [NSString stringWithFormat:@"%@",@"No SubTasks Filled"]; 
     cell.lblHours.text = [NSString stringWithFormat:@"%@",@"0 Hours Filled"]; 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 
    else if ([[leaves objectAtIndex:indexPath.row] isEqualToString:@"0"]) 
    { 
     cell.lblProjects.text = [projectNames objectAtIndex:indexPath.row]; 
     cell.lblTasks.text = [taskNames objectAtIndex:indexPath.row]; 
     cell.lblSubTasks.text = [subtaskNames objectAtIndex:indexPath.row]; 
     cell.lblHours.text = [[totalhours objectAtIndex:indexPath.row] stringValue]; 
     //NSLog(@"cell :%@",cell.lblHours.text); 
    } 
    else 
    { 
     cell.lblProjects.text = [leaves objectAtIndex:indexPath.row]; 
     cell.lblTasks.text = [NSString stringWithFormat:@"%@",@"No Projects/Tasks on this Date"]; 
     cell.lblSubTasks.text = [NSString stringWithFormat:@"%@",@"No Sub Tasks on this Date"]; 
     cell.lblHours.text = [[totalhours objectAtIndex:indexPath.row] stringValue]; 
    } 
    cell.editingAccessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
    NSNumber *myProjectArrayString = [timesheetid objectAtIndex:indexPath.row]; 
    cell.hdbrowcount = [NSString stringWithFormat:@"%@",myProjectArrayString]; 

    return cell; 


} 

ответ

0

Я не вижу эту линию

[self.tableview reloadData];

+0

Я добавил ту же строку, но я не смог обновить данные. Позвольте мне изменить вопрос – user3440782

+0

Проверьте, вызывается ли cellForRowAtIndexPath после отправки reloadData. Если это так, вы неправильно обновляете свою структуру данных. Почему reloadData вызывается отдельным методом? Почему бы вам не сразу вызвать его после обработки NSURLRequest? –

+0

Да, я сохранил точку останова в reloadddata [ниже NSURLRequest] и точку останова на cellForIndexPath, точка останова, которая была первой, была перезагружена, а затем перешла на cellForIndexPath – user3440782

0

использование postnotification всякий раз, когда изменяются данные. [[NSNotificationCenter defaultCenter] postNotificationName: @ "refresh" object: self];

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