2017-03-06 29 views
1

我使用Realm將數據存儲在我的項目中。我有一個奇怪的問題。 我的模型:領域數據isValid()爲false,但可以獲取數據

Class Post extends RealmObject implements Serializable{ 
    @PrimaryKey 
    int id; 
    ... 
    RealmList<Post> subdata; 

    RealmList<Post> getSubdata() { 
     return subdata; 
    } 

} 

我平時檢查getSubdata() != null && getSubdata().isValid()使用附屬數據。問題是當我檢查getSubdata().isValid()返回false,但我仍然在subdata中獲取數據。沒有檢查isValid沒關係。文件說是這樣的:

/** 
    * Checks if the {@link RealmList} is managed by Realm and contains valid data i.e., the {@link io.realm.Realm} 
    * instance hasn't been closed. 
    * 
    * @return {@code true} if still valid to use, {@code false} otherwise or if it's an unmanaged list. 
    */ 
    public boolean isValid() { 
     //noinspection SimplifiableIfStatement 
     if (realm == null || realm.isClosed()) { 
      return false; 
     } 
     return isAttached(); 
    } 

更新調試:

enter image description here

+0

我不知道爲什麼當Realm無效時可以獲取數據。但在我的應用程序,每當領域關閉,我試圖從'RealmObject'獲取數據,我的應用程序將拋出異​​常關於領域是無效 –

+1

這就是我問這個問題的原因@PhanVanLinh –

+1

它是託管或非託管數據?我猜測非託管 –

回答

0

類別需要延長RealmObject。所以它應該更改爲:

Class Post extends RealmObject { 
    @PrimaryKey 
    int id; 
    ... 
    RealmList<Post> subdata; 

    RealmList<Post> getSubdata() { 
     return subdata; 
    } 

} 
+0

這只是一個例子。我擴展了RealmObject。 –