【问题标题】:Can't set user objectId to parse pointer field无法设置用户 objectId 来解析指针字段
【发布时间】:2015-02-08 23:51:02
【问题描述】:

对于一个新项目,我正在运行一些测试。现在我有一个函数,我试图将一个对象保存到 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:最后决定删除app和Parse数据浏览器的installationId。重新安装应用程序后,一切都开始正常工作。我可能有一段错误的代码被我的安装 ID 卡住了。我希望有同样问题的其他人能快速到达这个帖子,不要花几天时间寻找答案!

更新 3:有一个函数试图根据带有应用程序用户对象 ID 的指针来查找用户,这导致应用程序崩溃一次,然后完全无法使用。我将第一个答案标记为正确答案,因为它解决了我最初的问题,但仅供参考。发生的事情比我最初预期的要多。

【问题讨论】:

    标签: android pointers parse-platform objectid


    【解决方案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设置指针

    【讨论】:

    • 我尝试按照您建议的方式进行操作,然后才开始回答,今天我又尝试了一次,但只要我试一试,我的内存就会激增,应用程序崩溃。我不明白为什么会发生这种情况,但它给了我一个 stackoverflow 和很多 com.parse.*.isdirty 错误。但是奇怪的是。如果我在 Log.i 条目中使用 ParseUser.getCurrentUser(),它会将用户的对象 ID 写入日志。我检查了,它是与我的用户对应的正确 objectId。
    • 可能有很多原因。你能提供那些错误日志吗?
    • 使用回调尝试 saveEventually 并查看在保存之前或保存之后发生崩溃。您是要仅保存一个对象还是要保存多个对象。
    • 我会尝试一下。我只保存一个对象。如果用户登录,on create 会影响我在上面发布的功能。问题直到 2 天前才出现。我会报告回调!
    • 我写了一个保存回调,它没有返回。但是,当我评论设置指针的行时,它确实返回。奇怪的是,将 saveEventually 更改为 saveInBackground 确实可以使用未注释的指针对象并返回......我真的不知道现在该怎么办?
    【解决方案2】:

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

    【讨论】:

    • 感谢您的回复,但我没有使用自动用户创建。我编写了一个自定义注册和登录脚本来处理用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多