私は自分のアプリケーションでCoreDataをセットアップしており、属性が 'isSpecial'ブール値のエンティティを持っています。 'isSpecial'が真であるレコードについては、それらのレコードをユーザがUITableViewから削除することはできません。削除した特定のCoreDataレコードを停止しますか?
どうすればいいですか?ユーザーが選択したセルが「特別」であることを直接どのように確認できますか?
ありがとうございました。ご協力いただきありがとうございます。
私は自分のアプリケーションでCoreDataをセットアップしており、属性が 'isSpecial'ブール値のエンティティを持っています。 'isSpecial'が真であるレコードについては、それらのレコードをユーザがUITableViewから削除することはできません。削除した特定のCoreDataレコードを停止しますか?
どうすればいいですか?ユーザーが選択したセルが「特別」であることを直接どのように確認できますか?
ありがとうございました。ご協力いただきありがとうございます。
エンティティのサブタイプNSManagedObject
(まだ持っていない場合)をサブクラス化し、validateForDelete:
をオーバーライドして、オブジェクトのisSpecial
プロパティを確認します。
スーパーの実装as detailed hereも呼び出す必要があります。
プログラムで削除する場合は、削除を試行する前にisSpecial
からNO
に設定するだけで済みます。
スワイプをテーブルビューで削除すると仮定すると、tableView:canEditRowAtIndexPath:
を使用し、isSpecial
がfalseの場合にのみ編集を許可する方がよい場合があります。これにより、ユーザーは削除ボタンを押しても何も起こらなくなります。
これを試しましたが、そのセルに接続されているオブジェクトのisSpecial属性にどのようにアクセスしますか? –
と同じ方法で、tableView:cellForRowAtIndexPath:でセルデータを設定するときにアクセスします。 NSFetchedResultsControllerがあると仮定すると、MyEntity * cellEntity = [self.fetchedResultsController objectForRowAtIndexPath:indexPath]のようになります。 return![cellEntity.isSpecial boolValue]; – wattson12
ああ、もちろん、愚かな私。私は '[self.fetchedResultsController objectAtIndexPath:indexPath]'を実行できますが、 'objectForRowAtIndexPath'は実行できません。これは違いがありますか?しかし、私はこれで運がない。私はそれが何であるかについての手がかりを持っていますが、私はあなたの思考、考えを動かすかもしれない何かを言う前に? –
実際のデータは削除されますが、セルはまだテーブルビューから削除可能です。 –
それは私に起こっていなかった! @ wattson12の答えは、次に行く方法です。 – paulbailey