2017-06-28 5 views
0

レルムDBにRoofオブジェクトがあり、それを使って画面にデータを表示します。ユーザーがログアウトすると、Roofオブジェクトが削除され、画面が更新されます。このアップデート方法では、アプリがクラッシュし、「オブジェクトが削除されたか無効になった」というメッセージが表示されます。レルムオブジェクトの削除を正しく処理する

オブジェクトを無効にする必要がありますか、これはどうしたらいいのですか?屋根が無効になっている場合、または存在しないオブジェクトを処理するより良い方法がある場合は、updateメソッドをチェックインするだけですか? >コンテナ - - >表示RealmDB:ここ

は、私が使用する基本的なコードです:

class Roof: Object { 
    dynamic var info: String? 
} 

let roof = Roof() 

let realm = try! Realm() 
try! realm.write { 
    realm.add(roof) 
} 
try! realm.write { 
    realm.delete(roof) 
} 
+0

ユーザーがログアウトしたときに、自分の情報をすべて削除します。その値に依存する他のコードを持っている必要があります。まだ参照しています。ユーザーnil oに関連するすべてを新しく開始するようにしてください。 –

+0

あなたはそれを削除した後、いつでも 'roof'オブジェクトを使用していますか?あなたはどこかの財産にそれを保管していますか?あなたのコードサンプルで、あなたのビューが '屋根 'をどのように使っているかははっきりしていません。 – AustinZ

+0

ええ、私はいくつかの画面でそれをプロパティとして使用しています。 –

答えて

0

私の理解に続き、これは基本的な流れです。 コンテナ(配列でもよい)がDB内のオブジェクトへの参照を保持するが、前に削除されている場合は、ビューを更新するときにはnothingが必要です。あなたのコンテナはDBよりも古いためです。 私の答えはもう一度クエリです(コンテナを更新してください)。その後、ビューを更新してください。

0

レルムからオブジェクトを削除すると、すべてのインスタンスが無効になり、もはや使用できなくなります。オブジェクトがisInvalidatedプロパティで無効化されているかどうかを確認できます。

関連する問題