2017-03-06 49 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。 –