2014-01-13 4 views
2

У меня есть два класса на Parse.com: Изображение & Пользователь. В классе User я сохраняю 3 поля Имя, номер мобильного телефона & Род занятий. В классе Image я сохраняю изображения.Отношения друг к другу на Parse.com

Мне нужно создать отношение «один ко многим» между этими двумя классами, чтобы я мог получать изображения с соответствующим номером мобильного телефона.

Я создал связь между классом User и классом Image на parse.com с столбцом Mobile в классе User. Невозможно найти способ получения изображений с определенным номером мобильного телефона с отношением «один ко многим». Пожалуйста, помогите, поскольку я прошел через документацию. Заранее спасибо.

ответ

3

Это всего лишь код, который нужно обсудить. Вам нужно подумать о том, чтобы организовать свои занятия задумчиво. Я не уверен, как вы собираетесь идти, но в том, что касается кодирования, это должно помочь.

Сначала получите текущего пользователя.

ParseUser currentUser = ParseUser.getCurrentUser(); 

Поскольку у вас есть «мобильный» столбец как отношение в таблице «Пользователь», сначала получите отношение. Нравится это.

ParseRelation<ParseObject> relation = currentUser 
            .getRelation("mobile"); 

Как только вы получите отношение, получите запрос на объект, который требует. В вашем случае это объект изображения.

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

Здесь вы можете настроить ваш запрос. Например:

query.getFirstInBackground(new GetCallback<ParseObject>() { 
    public void done(ParseObject, ParseException e) { 
    if(e == null) 
    //your code 
    //List<ParseFile> pFileList = (ArrayList<ParseFile>) object.get("images"); //something like this just to give an idea 
    } 

});

Или если у вас есть несколько объектов, используйте

query.findInBackground(new FindCallback<ParseObject>() { 
    public void done(List<ParseObject> list, ParseException e) { 
     if (e == null) { 
      for (ParseObject object : list) { 

       ParseFile image = (ParseFile) object.get("images_column_name"); 

      } 
     } 
    } 
}); 
+0

@Advitiya Abrol, только что отредактировал ответ. Там была ошибка ... Вместо ParseQuery query = ParseQuery.getQuery («Изображение»); это ParseQuery query = relation.GetQuery ("Изображение"); – droidx

+0

Кроме того, ответ @Timothy Walters может помочь вам получить представление о структуре вашего хранилища данных. – droidx

+0

thanx .., который работал, если у нас есть пользовательский класс по умолчанию. Но теперь я редактировал имя таблицы с помощью Data, чтобы избежать путаницы. Он не работает с настраиваемыми таблицами. Надеюсь, получишь! – addy123

0

Если Image класс имеет только один User он связан с просто использовать ссылку свойство. Вы могли бы назвать это owner или user или что угодно. Затем вы просто устанавливаете это для текущего пользователя (или любого другого пользователя).

Internal Parse будет хранить только идентификатор этого объекта с дополнительной информацией, чтобы сделать это ссылкой на другой класс.

При запросе вы можете просто использовать текущего пользователя (или любого другого пользователя) для сравнения с этим свойством. Опять же, Parse будет внутренне просто сравнивать ID, вам не нужно об этом думать.

Посмотрите на documentation here. См., Где он устанавливает свойство parentComment экземпляру Post? Это то, что вы хотите сделать.

Использование мобильного номера для ссылки - это плохая идея, как если бы вы изменили номер на User, тогда все классы Image, используя этот номер, теперь потеряли силу, если только вы не написали дополнительный код для обработки этого.

Смежные вопросы