0

Parse DB を使用しており、そこから削除できる currentUsers が必要です。currentUsers エントリを返す UITableView に PFQuery を設定しました。これは私がこれまで成功せずに試したことです。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source

        [filteredBooks removeObjectAtIndex:indexPath.row ];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation: UITableViewRowAnimationFade];


        PFObject *myobject = [PFObject objectWithClassName:@"Books"];
        [myobject deleteInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (succeeded) {

                [self.tableView reloadData];
            }

        }];

    }
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
       // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}

例外をスローします: reason: '無効な更新: セクション 0 の行数が無効です。更新後の既存のセクションに含まれる行数 (2) は、更新前にそのセクションに含まれる行数と等しくなければなりません ( 2)、そのセクションに挿入または削除された行数 (0 挿入、1 削除) のプラスまたはマイナス、およびそのセクションに移動した行数 (0 移動、0 移動) のプラスまたはマイナス。

4

1 に答える 1

0

最初にすべきことは、これを修正することです:

[filteredBooks removeObjectAtIndex:indexPath.row ];<br>
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                 withRowAnimation: UITableViewRowAnimationFade];

それを次のように置き換えます。

[filteredBooks removeObjectAtIndex:indexPath.row ];
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                 withRowAnimation: UITableViewRowAnimationFade];
[tableView endUpdates];

2番目の部分についてはわかりません。myObject削除したのと同じオブジェクトである場合は、完了ブロックでfilteredBooks行う必要はまったくありません。[tableView reloadData]そこでやりたいことを説明できますか?

また、tableView と素敵な更新アニメーションのパフォーマンスを向上させるために、次のように reloadData の代わりにテーブルの更新を使用することをお勧めします。

[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows]
                 withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];

代わりに[tableView reloadData];
、もちろん、何をしようとしているのかを知っておく必要があります

于 2012-10-16T15:12:13.247 に答える