Error: Object has been deleted or invalidated. (Realm) 2つのケースでこのエラーが発生しました。 削除する前にDBProductを見つけようとしましたが、エラー:オブジェクトが削除または無効化されています。これは間違っていますか?私を助けてください。この問題はのみiOS8で発生し、それがiOSの9オブジェクトが削除または無効化されています。 (Realm)
2
A
答えて
3
通常でOKです、そのエラーが場合にのみスローする必要があります。私は、更新
let realm = try! Realm()
try! realm.write {
let dbProduct = realm.objectForPrimaryKey(DBProduct.self, key: product.id)
if dbProduct != nil {
realm.delete(dbProduct!)
}
}
ケース2として、アラートビューのブロックに、このメソッドを呼び出します削除されたRealmオブジェクトのプロパティにアクセスしたり、親Realmオブジェクトに明示的に無効化するように指示した場合は、アクセスしてください。
枚ジェームズは、それがproduct.id
可能性が高いこと、クラッシュを引き起こす呼び出そうとした場合には、お使いのproduct
変数が既に存在無効になっていたことは非常に可能性があります、と述べました。
これを修正するには、product
変数を使用せず、代わりにid
という値のコピーを直接作成するのが一番簡単です。このようにして、オブジェクトが削除/無効化されている場合でも、それがまだ存在するかどうかをテストするための主キーがまだあります。
このコードは、もちろん、もう少し効率的にすることもできます。書き込みトランザクション内でクエリを実行する必要はなく、実際に削除するオブジェクトがあった場合にのみ書き込みトランザクションを開く必要があります(書き込みトランザクションはかなり重いのでできるだけ避ける必要があります)。
let productID = product.id //save a copy of the ID in case 'product' gets deleted.
let realm = try! Realm()
let dbProduct = realm.objectForPrimaryKey(DBProduct.self, key: productID)
if dbProduct != nil {
try! realm.write {
realm.delete(dbProduct!)
}
}
私は助けて欲しい!
関連する問題
- 1. エラー:オブジェクトが削除または無効化されました。 (Realm)
- 2. オブジェクトが削除されたか無効にされました
- 3. 'オブジェクトが削除または無効化されました。'の解決方法Realm例外
- 4. レルム:オブジェクトの削除と追加:オブジェクトが削除または無効にされました
- 5. 削除されたC++オブジェクトを指すハンドルの無効化
- 6. オブジェクトを無効化せずにオブジェクトを削除します
- 7. RealmBaseAdapterはrealm-javaから削除されていますか?
- 8. Xamarin Realm無効化メソッド
- 9. Get All In Realm削除されたアイテムを返します
- 10. C#.NET:TabControlのTabPageが無効化または有効化された実装
- 11. unity3d GameObjectはすでに有効化または無効化されています
- 12. 親ムービークリップを削除した後のネストされたムービークリップの無効化
- 13. SwiftオブジェクトをRealmから削除
- 14. jQueryツール、無効なメッセージ、削除されていない
- 15. ページがWikiから削除されました。ごみ箱が無効にされました
- 16. Tomcat認証(Realm)を無効または無効にする方法
- 17. tinyMCEトグルサイズ変更の削除/無効化
- 18. RealmRecyclerViewAdapterからRealmオブジェクトを削除します。
- 19. 無効な必須バリデーターがまだ有効化されます
- 20. 無視されたファイルは変更されたまま表示されますが、インデックスから削除すると、他のマシンで削除されます。
- 21. java.lang.IllegalStateException:オブジェクトはもはやRealmによって管理されません。それは削除されていますか?
- 22. リスト化されたカテーテルが無効化されたアイテム
- 23. 削除されていないオブジェクトで__vfptrテーブルが壊れています
- 24. ARCでオブジェクトが削除されていません
- 25. すべてのConsole#WriteLineコールを無効または削除しますか?
- 26. 非realmオブジェクトを、realfieldオブジェクトに対して無視されたプロパティとして追加しますか?
- 27. uwpアプリケーションからクローズボタンを無効または削除する
- 28. patoshai tree multiselectを削除または無効にする方法
- 29. 設定されているコントロールが削除された場合、イベントハンドラは削除されますか?
- 30. Gitはローカルに削除されたフォルダを無視します
あなたはロジックが間違った方法で回っていると思います。すでにレルムから削除されているレルムからオブジェクトを削除しようとしていますが、まだそれを参照しているポーノがあります。あなたのコードをすべて見ることなく、そのオブジェクトは '製品'だと思います。 –
レルムのテーブルビューを再読み込みしてデータを削除します。しかし、それはiOS8のみで起こり、iOS 9ではOKです。私は問題を理解しません。 – nangtrung