【发布时间】:2016-06-15 09:58:13
【问题描述】:
我有一个名为 Message 的 Realm 对象(下面的 sn-p),其中也可以包含相同类型的嵌套消息:
public class Message extends RealmObject {
@PrimaryKey
private int id;
@Getter
@Setter
private RealmList<Message> nestedMessages;
}
有时我需要更新嵌套消息列表,例如,如果添加了新的嵌套消息。
我是这样做的:
//newMessage is returned from a request
realm.beginTransaction();
RealmList<Message> nestedMessages = initialMessage.getNestedMessages();
nestedMessages.add(newMessage);
initialMessage.setNestedMessages(nestedMessages);
realm.copyToRealmOrUpdate(initialMessage);
realm.commitTransaction();
//Handle exceptions...
但在此之后,内部对象“nestedMessages”被重置并且大小为零。
这里有什么我遗漏的吗?或者对于这种用例,Realm 是否以不同的方式工作?
NewMessage 是这个响应的结果:
protected Response<Message> parseNetworkResponse(NetworkResponse response) {
if (isReqSuccessful(response)) {
try {
Gson gson = realmGson();
String json = new String(
response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(
gson.fromJson(json, Message.class),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
return Response.error(new VolleyError());
}
【问题讨论】:
-
什么是newMessage?你在哪里创建它
-
新消息是对我提出@TimCastelijns 的请求的响应
-
你能显示你为newMessage赋值的代码吗
-
@TimCastelijns 上面添加了新的消息响应