Как использовать поля отношений в parse.com

Я использую parse.com и просто хочу знать, как устанавливать и получать реляционные данные в подклассе ParseObject, например вот так.

Не могли бы вы привести пример поля типа Relation и показать мне, как установить и получить его в подклассе?

Большое спасибо заранее !


person Ran    schedule 17.08.2015    source источник


Ответы (1)


Я не уверен в том, что вы действительно спрашиваете. Поля Relation представляют собой наборы указателей на другие поля ParseObject. Вам не нужно добавлять вспомогательные методы в подкласс, если вам это не нужно. Суперкласс ParseObject имеет все методы, необходимые для взаимодействия с полями отношения. Основной точкой входа является getRelation("columnName"), которую вы можете использовать на любом экземпляре ParseObject.

Допустим, у вас есть класс AnywallPost, и вы установили столбец отношений "likes", в котором хранятся все ParseUser, которым понравился этот пост. Документация довольно ясно объясняет, как получить/установить.

Установить

На самом деле вы ничего не устанавливаете, вы просто добавляете новый элемент в поле отношения.

ParseRelation<ParseUser> relation = anywallPost.getRelation("likes");
relation.add(parseUser1);
relation.add(parseUser2);    
anywallPost.saveInBackground();

Удобным методом внутри вашего подкласса может быть add(ParseUser user):

public void add(ParseUser user) {
    ParseRelation<ParseUser> relation = this.getRelation("likes");
    relation.add(user);
    this.saveInBackground();
}

Тогда вы можете просто позвонить anywallPost.add(parseUser).

Получить

На самом деле вы ничего не получаете, а скорее находите элементы внутри отношения. Это действительно хорошо задокументировано в официальной документации. Полезный метод внутри вашего подкласса может дать вам запрос:

public ParseQuery<ParseUser> getLikes() {
    return this.getRelation("likes").getQuery();
}

Затем вы можете использовать ParseQuery<ParseUser> q = anywallPost.getLikes() и использовать запрос по своему усмотрению.

person natario    schedule 17.08.2015