2016-12-12 31 views
0

我試圖將dishList發送給我的服務,但它卡住了。即使我得到的對象從dishListdl,它都不起作用。 但是如果我發送dl如下面顯示的代碼,它的工作原理。因此,問題出在領域返回的對象中。如何通過retrofit2發送領域返回的數據?如何通過retrofit2發送領域返回的數據?

RealmResults<Dish> realmResults = realm.where(Dish.class).findAll(); 
    List<Dish> dishList = realmResults.subList(0, realmResults.size()); 
    List<Dish> dl = new ArrayList<>(); 
    dl.add(new Dish()); 
    mDishService.updateRepository(dishList).enqueue(new Callback<Boolean>() { 
     @Override 
     public void onResponse(Call<Boolean> call, Response<Boolean> response) { 
      if (response.body()) { 
       response.body(); 
      } 
     } 

     @Override 
     public void onFailure(Call<Boolean> call, Throwable t) { 

     } 
    }); 

服務方法:

@POST("/v1/dishes/repo/u") 
    Call<Boolean> updateRepository(@Body List<Dish> dishes); 
+0

這是幹什麼的? 'if(response.body()){response.body(); }'......這個工作到底如何呢? 「mDishService.updateRepository(dishList)」與「mDishService.updateRepository(dl)」有什麼不同? –

+0

請澄清「它卡住了」和「它不工作」,究竟發生了什麼?你在logcat中看到任何異常嗎? – Egor

+0

@ cricket_007,@Egor問題是領域數據無法序列化,這就是爲什麼需要從realm中刪除領域綁定的原因,因爲我的'realmResults'可以使用'realm.copyFromRealm(realmResults);'。它給出沒有領域的列表 –

回答

0

應該

mDishService.updateRepository(
    realm.copyFromRealm(realm.where(Dish.class).findAll()) 
).enqueue(new Callback<Boolean>() { 

這幾乎是唯一的用例,其中realm.copyFromRealm()是有道理的。