0

FetchedResultsController から Core Data オブジェクトの配列を取得する UITableView があります。標準の削除ボタンを使用してテーブルビューからオブジェクトを削除し、アイテムが削除されたときに通常行うようにテーブルビューセルをフェードアウトさせたいのですが、私の場合、実際にオブジェクトを削除するのではなく、削除されました。例/私は削除されたという属性を持っているので、それはまだ存在しますが、削除されたように見えます。

obj.deleted = [NSNumber numberWithBool:YES];

これを行う方法はありますか?標準的な削除と同じように動作するように見えますか?

電話なしではこれを行うことができないようです[self.tableView reloadData]ので、標準の削除に伴う素晴らしいアニメーションを失っています。

tableView フェッチ結果コントローラーにはフィルターがあるため、tableView のデータはフィルター処理されます。

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"deleted == %@", [NSNumber numberWithBool:NO];

必要なコードがここにあると思われます。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //
    }
}
4

1 に答える 1

2

NSManagedObjectには既に methodisDeletedがあるため、カスタム属性deletedがそのメソッドに干渉する可能性があります。invisibleエンティティに属性を追加して確認できます

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"invisible == %@", [NSNumber numberWithBool:NO];

フェッチされた結果コントローラーで。設定した場合

obj.invisible = [NSNumber numberWithBool:YES];

オブジェクトをテーブル ビューから削除する必要があります。(コンテキストを保存する必要があるかもしれませんが、現時点では 100% 確実ではありません。)

于 2013-03-29T09:31:29.080 に答える