2016-09-21 69 views
0

导致异常的线的内侧进行的交易的外境界数据是for循环结束括号:
* failedHTTPRequests是类型RealmResults抛出异常改变时变化一个事务

RealmSingleton.getUserInstance().executeTransaction(new Realm.Transaction() { 
       @Override 
       public void execute(Realm realm) { 
        for (int i=0;i<failedHTTPRequests.size();i++){ 
         if (failedHTTPRequests.get(i).getId().equals(FailedHTTPRequest.POST_USER_INFO)) 
          failedHTTPRequests.get(i).deleteFromRealm(); 
//exception line } 

       } 
      }); 

除了for循环之外,这看起来像是一个非常常规的操作。我知道迭代通过RealmResults可能会导致问题,我会改变它,但我不知道它是如何导致java.lang.IllegalStateException: Changing Realm data can only be done from inside a transaction

任何想法为什么抛出这个异常?

回答

0

刚才意识到我试图改变属于不同领域的数据。那不应该抛出一个不同的异常?

+0

不能,对象所关联的Realm不处于'write'状态(不在事务中),所以它不会因为_another_ Realm处于写状态而改变其错误消息 – EpicPandaForce