我正在使用以下代码保存对象并将其固定到本地数据存储区:
final ParseObject testObject = new ParseObject("freunde");
ParseObject objspieler = ParseObject.createWithoutData("_User", ParseUser.getCurrentUser().getObjectId().toString());
ParseObject objfreund = ParseObject.createWithoutData("_User", id);
testObject.put("spielerid", objspieler);
testObject.put("freundid", objfreund);
testObject.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
testObject.pinInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
progress.dismiss();
llfreunde.removeAllViews();
getfriends(1);
} else {
progress.dismiss();
Toast.makeText(getApplicationContext(), e.getMessage().toString(), Toast.LENGTH_LONG).show();
}
}
});
} else {
Toast.makeText(getApplicationContext(), e.getMessage().toString(), Toast.LENGTH_LONG).show();
}
}
});
运行代码后,pinInBackground抛出以下异常:
bolts.AggregateException: There were 3 exceptions.
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: ParseObjects.className, ParseObjects.objectId (code 2067)
我不知道如何解决这个问题!谢谢你的帮助!我正在使用Parse 1.10.1
感谢
答案 0 :(得分:0)
不确定它是否是问题的一部分,但您可以通过更改来创建指针,而不是存储ID:
final ParseObject testObject = new ParseObject("freunde");
ParseObject objspieler = ParseObject.createWithoutData("_User", ParseUser.getCurrentUser().getObjectId().toString());
ParseObject objfreund = ParseObject.createWithoutData("_User", id);
testObject.put("spielerid", objspieler);
testObject.put("freundid", objfreund);
要:
ParseUser freund; // assuming you have looked up the User object of the friend
final ParseObject testObject = new ParseObject("freunde");
testObject.put("spieler", ParseUser.getCurrentUser());
testObject.put("freund", freund);
但是我不清楚你为什么要创建这个对象?我的意思是,你可以在User对象中存储一个朋友指针数组。
<强>为什么强>
现在创建一个有用的查询来获取有关这两个用户的信息要容易得多:
ParseQuery query = new ParseQuery("freunde");
query.whereEqualTo("spieler", ParseUser.getCurrentUser());
query.include("freund");
List<ParseObject> freunde = query.find();
for (ParseObject freund: freunde) {
ParseUser freundUser = freund.getParseObject("freund");
}
请注意,这只是简单的代码,显示了这个想法。明显的好处是你不需要单独查找指针。它在查询的结果集中可以立即使用。