2014-12-04 64 views
0

我在使用realm.io中的查詢時遇到了問題。我的代碼:Android realm.io變量未設置?

public static void delete(Context context, Workday workday) { 
     Realm realm = getRealm(context); 
     realm.beginTransaction(); 
     RealmResults<Workday> workdays = realm.where(Workday.class) 
      .equalTo("date", workday.getDate()) 
      .equalTo("hours", workday.getHours()) 
      .equalTo("minutes", workday.getMinutes()) 
      .findAll(); 
     workdays.remove(0); 
     realm.commitTransaction(); 
} 

調試:

enter image description here

爲什麼在JSON線可見,但不是在自身領域中的數據?我究竟做錯了什麼? 在此先感謝!

UPDATE:

這是我的刪除功能,它確實找到workday1對象:

public static void delete(Context context, Workday workday) { 
    Realm realm = getRealm(context); 
    realm.beginTransaction(); 

    Workday workday1 = realm.where(Workday.class) 
      .equalTo("date", workday.getDate()) 
      .equalTo("hours", workday.getHours()) 
      .equalTo("minutes", workday.getMinutes()) 
      .findFirst(); 

    workday1.removeFromRealm(); 
    realm.commitTransaction(); 
} 

enter image description here

當執行崩潰的removeFromRealm方法:

java.lang.IllegalStateException:非法狀態:行/對象不再有效率。它被刪除了嗎?

我該如何解決這個問題?

回答

2

你沒有做錯什麼! :)

領域代理您的對象,以便將不會在所有地方的數據副本。 getter和setter被代理類覆蓋,並直接在Realm中訪問您的數據。當然,這使得在調試過程中檢查對象變得更加困難,正如您可以注意到的那樣,但這就是爲什麼我們也重寫了toString()以顯示有意義的東西。

+0

那麼爲什麼這個查詢返回2個結果呢?我認爲它應該只返回12月12日的那個。 – Jdruwe 2014-12-04 21:14:21

+0

因爲你碰到一個我們在0.75.1中修復的bug :) – Emanuelez 2014-12-04 21:27:49

+0

好吧,我在早上第一件事就是更新我的gradle構建文件。 – Jdruwe 2014-12-04 22:07:36