gpt4 book ai didi

android - 如果我只有 objectID,如何删除 ParseObject?

转载 作者:行者123 更新时间:2023-11-29 15:13:18 25 4
gpt4 key购买 nike

我执行了 findInBackground 查询以获取对象列表。之后,我根据获得的结果创建自己的对象:

query.findInBackground(new FindCallback<ParseObject>() {
public void done(final List<ParseObject> hangOutList, ParseException e) {
if (e == null) {
for (int i = 0; i < hangOutList.size(); i++) {
String objectID= hangOutList.get(i).getObjectId();
String city = hangOutList.get(i).getString("City");
String name = hangOutList.get(i).getString("Name");
String createdBy =
hangOutList.get(i).getString("CreatedBy");
HangOut ho=new HangOut(objectID, name, city, createdBy);
hangOuts.add(ho);
}

现在,当我单击其中一个时,我希望能够将其删除。在文档中,他们说要这样做:myObject.deleteInBackground();

但是,我没有ParseObject,所以我不能那样做。现在我正在尝试做这样的事情:

private void deleteHangout() {
ParseObject po=new ParseObject("HangOut");
po.setObjectId(hangOut.getObjectID());
po.deleteInBackground();
}

这是行不通的。有什么方法可以通过 ID 创建 Parse 对象。还是有其他想法?

执行 deleteHangout 后出现错误:

01-18 13:41:07.659    1716-1716/com.parse.starter E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Attempted to change an objectId to one that's
already known to the Offline Store.
at com.parse.OfflineStore.updateObjectId(OfflineStore.java:598)
at com.parse.ParseObject.setObjectIdInternal(ParseObject.java:1106)
at com.parse.ParseObject.setObjectId(ParseObject.java:1094)
at com.parse.starter.HangOuts.
HangOutDetail.deleteHangout(HangOutDetail.java:61)
at com.parse.starter.HangOuts.
HangOutDetail.access$000(HangOutDetail.java:16)
at com.parse.starter.HangOuts.
HangOutDetail$1.onClick(HangOutDetail.java:54)
at android.view.View.performClick(View.java:4204)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.
ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)

注意:我想避免对服务器进行不必要的调用。

最佳答案

你在做什么,你正在创建一个对象,然后调用你刚创建的另一个对象的方法,做你想做的事,你需要创建一个没有 data 的 Parse 对象。然后尝试使用 deleteEventually 方法,以便它首先在本地删除对象,即使离线,一旦连接,它也会从服务器中删除它。

ParseObject po= ParseObject.createWithoutData("HangOut", hangOut.getObjectID());
po.deleteEventually();

关于android - 如果我只有 objectID,如何删除 ParseObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28010420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com