2012-01-19 10 views
1

私は自分のアプリケーションでCoreDataをセットアップしており、属性が 'isSpecial'ブール値のエンティティを持っています。 'isSpecial'が真であるレコードについては、それらのレコードをユーザがUITableViewから削除することはできません。削除した特定のCoreDataレコードを停止しますか?

どうすればいいですか?ユーザーが選択したセルが「特別」であることを直接どのように確認できますか?

ありがとうございました。ご協力いただきありがとうございます。

答えて

1

エンティティのサブタイプNSManagedObject(まだ持っていない場合)をサブクラス化し、validateForDelete:をオーバーライドして、オブジェクトのisSpecialプロパティを確認します。

スーパーの実装as detailed hereも呼び出す必要があります。

プログラムで削除する場合は、削除を試行する前にisSpecialからNOに設定するだけで済みます。

+0

実際のデータは削除されますが、セルはまだテーブルビューから削除可能です。 –

+0

それは私に起こっていなかった! @ wattson12の答えは、次に行く方法です。 – paulbailey

2

スワイプをテーブルビューで削除すると仮定すると、tableView:canEditRowAtIndexPath:を使用し、isSpecialがfalseの場合にのみ編集を許可する方がよい場合があります。これにより、ユーザーは削除ボタンを押しても何も起こらなくなります。

+0

これを試しましたが、そのセルに接続されているオブジェクトのisSpecial属性にどのようにアクセスしますか? –

+1

と同じ方法で、tableView:cellForRowAtIndexPath:でセルデータを設定するときにアクセスします。 NSFetchedResultsControllerがあると仮定すると、MyEntity * cellEntity = [self.fetchedResultsController objectForRowAtIndexPath:indexPath]のようになります。 return![cellEntity.isSpecial boolValue]; – wattson12

+0

ああ、もちろん、愚かな私。私は '[self.fetchedResultsController objectAtIndexPath:indexPath]'を実行できますが、 'objectForRowAtIndexPath'は実行できません。これは違いがありますか?しかし、私はこれで運がない。私はそれが何であるかについての手がかりを持っていますが、私はあなたの思考、考えを動かすかもしれない何かを言う前に? –

関連する問題