无法将user objectId设置为解析指针字段

时间:2015-02-08 23:51:03

标签: android pointers parse-platform objectid

对于一个新项目,我正在进行一些测试。现在我有一个函数,我试图将一个对象保存到parse.com框架,一切顺利,直到我添加了一个用户指针对象。当我使用当前用户的objectId作为它的值时,指针线似乎阻止了我的代码。然而,使用用户的电子邮件地址的随机单词确实有效。我在下面添加了我的代码。

   // Create a data object and store it online.
   public void createDataObject(){
        ParseObject object = new ParseObject("TestData");
        object.put("action", "trial");
        object.put("value", "succes?");
        object.put("name", ParseUser.getCurrentUser().getUsername());
        String pointer = ParseUser.getCurrentUser().getObjectId();
        Log.i(TAG, pointer);
        object.put("pointer", ParseObject.createWithoutData("_User", pointer));
        object.saveEventually();
    }

我希望有人能帮助我弄清楚,非常感谢帮助!

更新:问题不是我的指针命令,而是我使用saveEventually();如果我使用saveInBackground它只是工作,但我想使用saveEventually,因为可能会丢失网络连接。有没有人知道可能是什么问题?

更新2:最后决定删除Parse数据浏览器的app和installationId。重新安装应用程序后,一切都开始像它应该的那样工作。我可能有一段糟糕的代码被我的安装ID卡住了。我希望有同样问题的其他人快速到达这篇文章,不要花几天时间寻找答案!

更新3:有一个功能试图根据指针查找用户,该指针包含应用用户的对象ID,导致应用程序崩溃一次而不是完全无法使用。我把第一个答案标记为正确的答案,因为它解决了我原来的问题,但只是fyi ..比起我预期的更多。

2 个答案:

答案 0 :(得分:1)

试试这个:

public void createDataObject(){
        ParseObject object = new ParseObject("TestData");
        object.put("action", "trial");
        object.put("value", "succes?");
        object.put("name", ParseUser.getCurrentUser().getUsername());
        object.put("pointer", ParseUser.getCurrentUser());
        object.saveEventually();
    }

无需获取对象ID来设置当前用户。

编辑: 您也可以参考https://stackoverflow.com/a/28403968/2571060来设置指针

答案 1 :(得分:0)

我在iOS SDK上遇到了类似的问题。您使用的是“自动创建用户”吗?因此,在这种情况下,ParseUser.getCurrentUser()返回其objectId为null的User对象。根据文档,在用户或与其相关的任何对象被保存之前,它为空。但根据我的经验,事实并非如此,我必须首先保存用户,否则我会收到“用户只能在signUp期间创建”等错误。