我使用Parse存储我的云数据。当我启动应用程序时,我有一个initializeData()方法来获取我想在本地存储的数据。例如,我想在本地保存已登录用户最喜欢的保姆列表:
final UzurvUser user = UzurvUser.currentUzurvUser();
user.getFavoriteNannys().getQuery().findInBackground(new FindCallback<UzurvUser>() {
@Override
public void done(final List<UzurvUser> nannys, ParseException e) {
if (e == null) {
UzurvUser.unpinAllInBackground(NANNYS_GROUP_LABEL,
new DeleteCallback() {
public void done(ParseException e) {
if (e == null) {
UzurvUser.pinAllInBackground(NANNYS_GROUP_LABEL, nannys);
} else {
e.printStackTrace();
}
}
});
} else {
e.printStackTrace();
}
}
});
然后,我稍后检索它们:
ParseQuery<UzurvUser> query = ParseQuery.getQuery(UzurvUser.class);
query.fromPin(MainActivity.NANNYS_GROUP_LABEL);
mFavoriteNannys = new ArrayList<>(query.find());
现在的问题是,如果我想从用户关系中删除保姆并将其保存在云中,我将不得不更新保姆列表的本地副本,并保存当前用户:
ParseRelation<UzurvUser> pr = UzurvUser.currentUzurvUser().getFavoriteNannys();
pr.remove(nannyToRemove);
mNanny.unpinInBackground(MainActivity.NANNYS_GROUP_LABEL);
UzurvUser.currentUzurvUser().saveEventually();
这是&#34;正确&#34;正如我所描述的那样同步数据的方式?我希望不必更新nannys列表并在每次添加或删除用户关系中的保姆时保存用户,但我仍然希望拥有所有这些的本地副本用户的保姆。
答案 0 :(得分:1)
如果你想在两个地方,你的本地数据库和你的服务器获得相同的列表,我认为你应该发送一个请求,使用AsynTask或其他方法在服务器中添加/更新/删除这个项目,并且然后,当您收到确认已在服务器中执行此更改时,在本地数据库中添加/更新/删除您的项目。