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. Android StudioのListViewにバインドされたRealmオブジェクトを削除する
- 10. realm.js - スタックトレースなしで無効化または削除されたContactタイプのオブジェクトへのアクセス
- 11. OAuthエラー - スクリプトの削除または無効化
- 12. Get All In Realm削除されたアイテムを返します
- 13. ターゲット属性が削除または無視されています
- 14. C#.NET:TabControlのTabPageが無効化または有効化された実装
- 15. 呼び出し前にオブジェクトを削除する `deleteRowsAtIndexPaths:withRowAnimation`がまだ生成されています:無効な更新:セクション0の行数が無効です
- 16. unity3d GameObjectはすでに有効化または無効化されています
- 17. 親ムービークリップを削除した後のネストされたムービークリップの無効化
- 18. jQueryツール、無効なメッセージ、削除されていない
- 19. ダイナミックビューを削除または表示を無効にします。
- 20. ページがWikiから削除されました。ごみ箱が無効にされました
- 21. tinyMCEトグルサイズ変更の削除/無効化
- 22. Tomcat認証(Realm)を無効または無効にする方法
- 23. 無効な必須バリデーターがまだ有効化されます
- 24. SwiftオブジェクトをRealmから削除
- 25. branch.ioのディープリンクを無効または無効にするか削除する
- 26. RealmRecyclerViewAdapterからRealmオブジェクトを削除します。
- 27. 無視されたファイルは変更されたまま表示されますが、インデックスから削除すると、他のマシンで削除されます。
- 28. リスト化されたカテーテルが無効化されたアイテム
- 29. トリガーは削除されました..誰が削除されましたか?
- 30. クッキーが削除されています
あなたはロジックが間違った方法で回っていると思います。すでにレルムから削除されているレルムからオブジェクトを削除しようとしていますが、まだそれを参照しているポーノがあります。あなたのコードをすべて見ることなく、そのオブジェクトは '製品'だと思います。 –
レルムのテーブルビューを再読み込みしてデータを削除します。しかし、それはiOS8のみで起こり、iOS 9ではOKです。私は問題を理解しません。 – nangtrung