不幸的是,关于此事的official Parse documentation非常不清楚。它告诉" 当一个对象被固定时,每次通过提取或保存新数据来更新它时,本地数据存储区中的副本将自动更新。你根本不需要担心它。",所以我能理解它意味着如果我这样做
List<GameScore> list;
// ...
ParseObject.pinAllInBackground(list);
GameScore.saveAllInBackground(list);
然后我这样做
ParseQuery.getQuery(GameScore.class).findInBackground(new FindCallback<GameScore>() {
@Override
public void done(final List<GameScore> objects, ParseException e) {
// show them ...
}
);
我本地存储的固定数据应该自行更新。
然而,只有two paragraphs以下,Parse团队展示了一种类似这样的方法:
public void getDataFromParse() {
ParseQuery.getQuery(GameScore.class)
.findInBackground(new FindCallback<GameScore>() {
@Override
public void done(final List<GameScore> objects, ParseException e) {
ParseObject.unpinAllInBackground(oldPinnedData, new DeleteCallback() {
@Override
public void done(ParseException e) {
ParseObject.pinAllInBackground(objects,
new SaveCallback() {
@Override
public void done(ParseException e) {
// Show data
}
}
);
}
});
}
}
所以,基本上:首先,查询云上更新的Parse数据。然后,取消固定您拥有的旧数据。最后,钉上新的。
在another one中,他们甚至不会取消旧的本地数据,但他们 确定刚从云端获取的新数据。
private void loadFromParse() {
ParseQuery<Todo> query = Todo.getQuery();
query.findInBackground(new FindCallback<Todo>() {
@Override
public void done(List<Todo> todos, ParseException e) {
if (e == null) {
ParseObject.pinAllInBackground((List<Todo>) todos,
new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
// show them
}
}
});
}
}
});
}
我非常困惑,我不了解本地数据存储区与Parse云之间的关系。
就个人而言,我处于云总是胜过本地数据的情况。