似乎无法在解析中保存多个对象(Android)

时间:2014-08-28 17:10:39

标签: android parse-platform

我在将多个相关对象保存到数据库中时遇到了一些问题。

这里我试图在朋友之间建立关系,所以我正在创建一个“friendsAdded”数组。目前,我可以创建用户添加朋友的单向关系。

如:

 protected void addfriend(int position) {
    // TODO Auto-generated method stub
    String kliquitId =(((List<KliquitUser>) userlist).get(position).getObjectId());

    ParseQuery<ParseUser> otheruser = ParseUser.getQuery();
    otheruser.getInBackground(kliquitId, new GetCallback<ParseUser>() {
        @Override
        public void done(ParseUser otheruser, ParseException e) {
            // TODO Auto-generated method stub
            ParseUser user = ParseUser.getCurrentUser();
            user.addUnique("friendsAdded", otheruser);
            user.saveInBackground();

}

    });

所以这是问题......

每当添加好友发生时,我想创建一个“双向关系”......

所以,我似乎无法将当前的解析用户添加到“已添加的朋友”数组中。

我试过了。但它不起作用:

protected void addfriend(int position) {
    // TODO Auto-generated method stub
    String kliquitId =(((List<KliquitUser>) userlist).get(position).getObjectId());

    ParseQuery<ParseUser> otheruser = ParseUser.getQuery();
    otheruser.getInBackground(kliquitId, new GetCallback<ParseUser>() {
        @Override
        public void done(ParseUser otheruser, ParseException e) {
            // TODO Auto-generated method stub
            ParseUser user = ParseUser.getCurrentUser();
            otheruser.addUnique("friendsAdded", user);
            user.addUnique("friendsAdded", otheruser);
            user.saveInBackground();

}

    });

有没有人有任何想法?

谢谢!

2 个答案:

答案 0 :(得分:1)

用户表由Parse保护,因为您无法修改另一个User对象,您只能修改currentUser对象。来自Parse文档:

“ParseUser类默认是安全的。存储在ParseUser中的数据只能由该用户修改。默认情况下,任何客户端仍然可以读取数据。”

由于您尝试修改与当前用户不同的用户对象,因此不应允许您的行otheruser.addUnique("friendsAdded", user);

相信正确的方法是使用Relation而不是Array。你应该非常彻底地阅读Parse文档 - 你将会在文档中找到很多答案。阅读关系数据:https://parse.com/docs/android_guide#objects-pointers

答案 1 :(得分:0)

 for ( int i = 0; i < imageArrayList.size(); i++) {
                                pos = i;
                                byte[] image = (getByteArray(imageArrayList.get(i)));
                                final ParseFile file = new ParseFile("abc.jpg", image);
                                final int finalPos = pos;
                                file.saveInBackground(new SaveCallback() {
                                    @Override
                                    public void done(ParseException e) {
                                        parseFiles.add(file);
                                        if(finalPos == imageArrayList.size()-1)
                                        {
                                            ParseObject imagelist = new ParseObject("Images");
                                            imagelist.put("refrence", form.getObjectId());
                                            imagelist.put("imagesfile", parseFiles);
                                            imagelist.saveEventually();
                                        }
                                    }
                                });


                            }