【发布时间】:2015-10-22 03:01:24
【问题描述】:
这是我项目的代码,我使用 Realm 作为我的数据库。
我遇到了与我类似的问题,但无法解决,所以在这里发布。 这是我经历过的https://github.com/realm/realm-java/issues/542
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (HttpError.checkStatusSuccessForResponse(statusCode, result))
{
Realm realm = Realm.getInstance(ApplicationController.getInstance());
realm.beginTransaction();
try {
JSONObject jsonResult = new JSONObject(result);
JSONArray jsonArray = jsonResult.getJSONArray("phone_numbers");
for (int i = 0; i < jsonArray.length(); i++)
{
// List<R_LocalContactDB> localContactDb = Select
// .from(R_LocalContactDB.class)
// .where(Condition.prop("PHONE").eq(jsonArray.get(i)))
// .list();
RealmResults<R_LocalContactDB> localContact = realm.where(R_LocalContactDB.class).equalTo("phone",jsonArray.get(i).toString()).findAll();
if (localContact.size() > 0)
{
R_LocalContactDB localDb = localContact.get(0);
localDb.setStatus(1);
realm.copyToRealmOrUpdate(localDb);
realm.commitTransaction();
}
}
localContactsSyncCallBack.didFinishProfileSync(true, null);
} catch (JSONException e) {
Log.d("Server Response ", "Exception " + result);
}
}
else {
Log.d("Server Response ",
"Exception "
+ HttpError
.parseErrorFromServer(statusCode, result));
}
}
我不断收到嵌套错误!有人可以帮忙吗?
【问题讨论】:
-
super.onPostExecute(result); 中的预期是什么?我是否需要加倍......
-
我只是重写了方法,但我想通过 Realm 查询获取本地联系人
-
你应该使用
executeTransaction()而不是realm.beginTransaction()和realm.commitTransaction()