2017-05-08 3 views
0

Wie ich die JSON-Daten lösche .Wenn ich die JSON-Daten lösche, muss ich diese bestimmten Daten in der Tabellenansicht entfernen. Auch wenn ich versuche, die Daten in der ersten Zeile zu entfernen, löst es die Ausnahme wie "Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInternalInconsistencyException', Grund: 'versuchen, Zeile 1 aus Abschnitt 0 zu löschen, die nur 1 Zeilen vor dem Update enthält'" app crashedTabellennicht neu laden Daten funktionieren nicht in uitableview

kann mir jemand vorschlagen, was war das Problem in der folgenden Codierung?

- (IBAction)deletebutton:(id)sender { 
    NSString *userid = [[NSUserDefaults standardUserDefaults] 
         stringForKey:@"UserId"]; 
    NSString *encodeddistrictvalue = [selecteddistrictvalue stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]]; 
    NSString *encodedPanchaytvalue = [selectedpanchayatvalue stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]]; 
     NSString *urlStr = [NSString stringWithFormat:@"my json url",encodeddistrictvalue,encodedPanchaytvalue,taxtypevariable,selctedassessmentno,userid];NSURL *url = [NSURL URLWithString:urlStr]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    [NSURLConnection sendAsynchronousRequest:request 
             queue:[NSOperationQueue mainQueue] 
          completionHandler:^(NSURLResponse *response, 
               NSData *data, NSError *connectionError) 
    { 
      if (data.length > 0 && connectionError == nil) 
      { 
       NSDictionary *dictionaryvalue = [NSJSONSerialization JSONObjectWithData:data 
                     options:0 
                     error:NULL]; 
       NSString *code = [[dictionaryvalue objectForKey:@"code"] stringValue]; 
       NSLog(@"the response string value is %@",code); 
       if ([code intValue]==1) { 
        NSLog(@"deletd sucessfully"); 
       UIAlertController * alert = [UIAlertController 
               alertControllerWithTitle:@"Alert" 
               message:@"Are u sure u want to delete the table data" 
               preferredStyle:UIAlertControllerStyleAlert]; 
        UIAlertAction* yesButton = [UIAlertAction 
               actionWithTitle:@"yes" 
               style:UIAlertActionStyleDefault 
               handler:^(UIAlertAction * action) { 
               { 
                [assessmentnumber removeObject:selctedassessmentno ]; 
                [self.tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:@"expandingCell"]; 
                [_tableview reloadData]; 
               } 
                }]; 
        [alert addAction:yesButton]; 
        [self presentViewController:alert animated:YES completion:nil]; 
        alert.view.tintColor = [UIColor blackColor]; 

       } 
      } 


    } ]; 

    } 
+0

Zu viel Code zur Verfügung gestellt. Bitte bearbeiten Sie Ihre Frage auf einen verständlichen Betrag. – brimstone

+0

sry für Unannehmlichkeiten sir .i bearbeitet meine Frage pls überprüfen Sie es – user19

+0

Laden Sie nicht die gesamte Tabellenansicht neu. Verwende 'deleteRowsAtIndexPaths'. Und wenn Sie Storyboard- und Prototypzellen verwenden, müssen Sie überhaupt keine Zellen registrieren. – vadian

Antwort

0

put diese viewDidLoad

[self.tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:@"expandingCell"]; 
+0

für Ihre Antwort, wenn ich das in viewdidload ich bekomme die folgende Ausnahme "Beenden App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '- [UITableViewCell numberlabel]: unerkannter Selektor gesendet um 0x145c1f640 '" – user19

+0

zu instanziieren, wird die Array-Anzahl möglicherweise nicht geändert. –

-1

können Sie & Ende Update beginnen verwenden:

Table.beginUpdates() 
    for i in 0 ..< sections[section].items.count 
    { 
     Table.reloadRows(at: [IndexPath(row: i, section: section)], with: .automatic) 
    } 
    Table.endUpdates() 
Verwandte Themen