尝试从域(0.82.1)更新objet时出现此错误:
rowIndex>可用行:0> 0
Realm realm = null;
try{
realm = Realm. getInstance ( context );
RealmResults<Track> results = realm.allObjects( Track.class )
.where()
.equalTo("fileType", type)
.equalTo("fileState", actualState)
.equalTo("fileName", fileName)
.findAll();
//At this point result.size() = 1
for( int i = 0; i < results.size(); i++ )
{
realm.beginTransaction();
results.get( i ).setFileState(newState);
realm.commitTransaction();
}
}catch ( RealmException e ) {
Log.d( TAG, e.getMessage());
}catch ( RealmIOException e ) {
Log.d( TAG, e.getMessage());
}catch ( Exception e ) {
Log.d( TAG, e.getMessage());
}
finally {
if (realm != null) {
realm.close();
}
}
我也尝试过Iterator,但我也有同样的错误。
要点:
崩溃是在for循环中。我捕获了以下异常:
rowIndex 0 > 0 - invalid!
jni: ThrowingException 7, rowIndex > available rows: 0 > 0
任何解决方案?
答案 0 :(得分:4)
这种情况正在发生,因为您正在修改正在迭代的RealmResults。这是一个已知问题,您可以在此处跟踪其进度:https://github.com/realm/realm-java/issues/640
作为一种解决方法,您可以在迭代期间将要修改的对象保存在另一个列表中,然后迭代新列表以进行实际修改。