0

我正在努力为我正在研究的聊天室示例保持直截了当。

给定:UserA UserB ChatRoom01

在此示例中,当 UserA 进入 ChatRoom01 时,我想在两者之间创建关联。现在由于 ChatRoom01 已经存在,我可以通过执行以下操作来获取对象:

ParseQuery<ParseObject> query = ParseQuery.getQuery("ChatRoom");
        query.getInBackground(getIntent().getStringExtra("chatRoom"), new GetCallback<ParseObject>() {
            @Override
            public void done(ParseObject chatRoom, ParseException e) {
                if(e == null){
                    // we found the object
                    myChatRoom = chatRoom;
                    // set the activity's title
                    setTitle(myChatRoom.getString("name"));
                }else{
                    // aww sh!t. can't find it
                }
            }
        });

如果我要使用指针,我会做类似的事情:

myChatRoom.put("member", ParseUser.getCurrentUser());

当用户离开房间时,我想删除关联。我在想:

myChatRoom.remove("member");

将从房间中删除成员协会。那不是我想做的。我将如何做到这一点?

如果事实证明指针是这里的理想解决方案,那么当 UserB 进入聊天室时,我将按照与 UserA 进入聊天室时相同的步骤进行操作。但是这样做,我不会用UserB覆盖UserA的成员信息吗?ParseRelation 似乎是一个更好的选择,因为我可以添加/删除用户;但是,由于可能有超过 100 个用户,我的印象是指针是要走的路。我愿意接受有关如何处理此问题的建议。

另一种方法是在他们进入频道时订阅他们,并在他们离开时取消订阅。听起来不错,但我不确定如何检查他们是否已经订阅。

4

1 回答 1

0

听起来您想使用 ParseRelation。

要添加到关系中,请使用:

ParseRelation<ParseObject> relation = myChatRoom.getRelation("members");
relation.add(ParseUser.getCurrentUser());

要删除关系,请使用:

relation.remove(ParseUser.getCurrentUser());

文档:

关系指南

API 参考

于 2014-05-22T21:31:00.720 回答