解析/ Android系统。让用户与对象关联

时间:2015-05-08 17:29:54

标签: android parse-platform

我有一个Android应用程序,使用Parse存储公司名称和与公司相关的名称。

我能够创建一个名为ownedby的列,用于存储userID。

现在,我想将信息存储在公司列中,其中userby中的userID等于当前用户。这是我正在使用的查询:

        ParseQuery<ParseObject> query = ParseQuery.getQuery("midwifefirm");

        query.findInBackground(new FindCallback<ParseObject>() {

            @Override
            public void done(List<ParseObject> midwives, ParseException e) {
                // TODO Auto-generated method stub
                if(e==null) {

                    for (ParseObject midwifefirm : midwives) {
                        String midwiferelation;
                        ParseUser currentUser;
                        String userID;


                        midwiferelation = midwifefirm.getString("ownedby");
                        currentUser = ParseUser.getCurrentUser();
                        userID = currentUser.getObjectId();

                        if (midwiferelation.equals(userID)) {

                            midwifefirm.put("yearsinpractice", yearsexperience);
                            midwifefirm.put("practicename", midwifefirmname);
                            midwifefirm.put("education", education);



                        }

                    }

                }
            else{
                Log.d("notretreive", "Error: " + e.getMessage());

                }




                                 }
                               });

这似乎有效;但在后端,没有数据存储,所以我想我的&#34; if语句&#34;从来没有工作过。

有什么明显我做错了吗?这是一个论文项目,所以我可以尝试为演示做一些假装,但是想学习如何正确地做。

非常感谢

迈克尔

1 个答案:

答案 0 :(得分:0)

我不确定下面的代码完全正确。但是你遇到的问题在于ownedBy是一个(如我所知)指向用户的指针。

当你尝试midwifefirm.getString("ownedby")时,你没有像预期的那样得到objectId,而是得到像{'type':'__pointer', 'class' : '_User', 'objectId' : 'xxx'}这样的东西(我不记得这个符号,但希望你能得到这个想法;文字指针字符串值)。

了解这一点,objectId xxx字符串永远不能等于midwifefirm.getString("ownedby")并不奇怪。

而不是getString,您可以调用getParseUser,它将返回带有正确objectId的空ParseUser,回想一下指针只有检索对象所需的最小信息指向。

您现在应该可以直接比较当前的ParseUser和指针ParserUser。后者为空的事实应该无关紧要,因为它只需要objectId来执行比较。

试试这个:

        ParseQuery<ParseObject> query = ParseQuery.getQuery("midwifefirm");

        query.findInBackground(new FindCallback<ParseObject>() {

            @Override
            public void done(List<ParseObject> midwives, ParseException e) {
                // TODO Auto-generated method stub
                if(e==null) {

                    for (ParseObject midwifefirm : midwives) {
                        ParseUser midwiferelation;
                        ParseUser currentUser;



                        midwiferelation = midwifefirm.getParseUser("ownedby");
                        currentUser = ParseUser.getCurrentUser();


                        if (midwiferelation.equals(currentUser)) {

                            midwifefirm.put("yearsinpractice", yearsexperience);
                            midwifefirm.put("practicename", midwifefirmname);
                            midwifefirm.put("education", education);



                        }

                    }

                }
            else{
                Log.d("notretreive", "Error: " + e.getMessage());

                }




                                 }
                               });