Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在rowindexpath处删除tableView中的项是否会删除它下面的项?_Ios_Objective C_Uitableview - Fatal编程技术网

Ios 在rowindexpath处删除tableView中的项是否会删除它下面的项?

Ios 在rowindexpath处删除tableView中的项是否会删除它下面的项?,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有一个奇怪的问题。我有一个填充的tableview,允许用户通过向右滑动并点击“删除”来删除项目。该功能工作正常,成功地从表和数据源(Drupal节点)中删除了该项。然而,由于某些原因,当我滑动一个项目以删除它时,它实际上会删除我在数据源中选择的项目下面的项目例如我选择删除tableview中的节点133,节点132被删除 我已经创建了一个从Drupal获取所选行的节点id的字符串,但它几乎就像是在获取我所选行中的节点id之前的节点id 参见代码: - (void)tableView:(UIT

我有一个奇怪的问题。我有一个填充的tableview,允许用户通过向右滑动并点击“删除”来删除项目。该功能工作正常,成功地从表和数据源(Drupal节点)中删除了该项。然而,由于某些原因,当我滑动一个项目以删除它时,它实际上会删除我在数据源中选择的项目下面的项目例如我选择删除tableview中的节点133,节点132被删除

我已经创建了一个从Drupal获取所选行的节点id的字符串,但它几乎就像是在获取我所选行中的节点id之前的节点id

参见代码:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [self.descripData removeObjectAtIndex:indexPath.row];

        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

        NSMutableDictionary *nodeData = [[self.descripData objectAtIndex:indexPath.row] mutableCopy];
        NSString *nid = [nodeData objectForKey:@"nid"];
        [nodeData setObject:nid forKey:@"nid"];
        [DIOSNode nodeDelete:nodeData success:^(AFHTTPRequestOperation *operation, id responseObject) {
         NSLog(@"node deleted!");
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"could not delete node!");
       }];

        [tableView reloadData];
    }

}

问题是,在从
self.descrippdata
中删除数据后,您会抓取节点数据。因此,实际上,您可以获取下一行的数据。颠倒顺序

另外,不要调用
reloadData
。您已经从表中删除了删除的行

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        NSMutableDictionary *nodeData = [[self.descripData objectAtIndex:indexPath.row] mutableCopy];

        // Delete the row from the data source
        [self.descripData removeObjectAtIndex:indexPath.row];

        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

        NSString *nid = [nodeData objectForKey:@"nid"];
        [nodeData setObject:nid forKey:@"nid"];
        [DIOSNode nodeDelete:nodeData success:^(AFHTTPRequestOperation *operation, id responseObject) {
         NSLog(@"node deleted!");
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"could not delete node!");
       }];
    }
}