2015-02-10 2 views
1

У меня есть таблица 'игра' в моих синтаксическую базе данных со следующими соответствующими столбцами:PFQueryTableViewController 3 секций

  • ISOVER (Boolean)
  • whoseTurn (связь: _User) (Игры могут иметь несколько игроков, так что это может быть поворот более чем одного человека в то же время)
  • игроков (связь: _User)

Мне нужно запросить эту таблицу и отображать результаты в 3-х отдельных участках Tableview:

  • 'Мой Turn'
  • 'Их Turn'
  • 'Game Over'

Я думал, используя следующий запрос, связанный с некоторыми из кода в ответ Приводимые здесь: https://parse.com/questions/using-pfquerytableviewcontroller-for-uitableview-sections

PFQuery *query = [PFQuery queryWithClassName:self.parseClassName]; 

    [query whereKey:@"players" equalTo:[PFUser currentUser]]; 

    //BREAK UP INTO SECTIONS 
    [query orderByDescending:@"isOver"]; 
    [query addDescendingOrder:@"whoseTurn"]; 

Как можно отобразить результаты в 3-х различных разделах Tableview?

ответ

1

Вопрос содержит две проблемы, и это слишком много для PFQueryTableVC. Сообщение, сделанное вами на сайте, показывает, что вы можете получать разделы с небольшим дополнительным переопределением, но то, что не охвачено, заключается в том, что ваша модель зависит от связанных объектов (пользователей) через PFRelation.

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

Это приведет к тому, что вы свернете свой собственный с обычным старым UIViewController, который имеет вид UITableView в качестве подсмотра его представления. (Заметьте, я не рекомендую UITableViewController здесь ... точно так же, как PFQueryTableVC, он часто приносит больше усилий, чем удобство, хотя вы, вероятно, могли бы уйти от него здесь).

Суть в том, как это сделать: последовательно, запросить таблицу игр, тогда это whoseTurn отношение, то это players отношение. С помощью этих данных вы сможете разделить найденные игры на три массива, соответствующие точно вашим секциям просмотра таблиц: gamesThatAreOver, gamesThatAreUsersTurn, gamesThatAreOtherUsersTurn.

Вы можете поместить эти массивы в другой, назовите его model. Скажите ваш вид таблицы, у вас есть self.model.count разделов (которые всегда будут ==3), а число строк на пути индексного self.model[indexPath.section].count

Ваша версия объекта с индексом путем даст вам игру, и будет выглядеть это: self.model[indexPath.section][indexPath.row];

PS - Я думаю, что освобождение себя от «удобства» (aka constraint) предоставленного класса анализа будет в любом случае положительным.

+0

Большое спасибо за быстрый и подробный ответ! Теперь, могу ли я не просто использовать PFQTVC и получить эти отношения в методе objectsDidLoad, и создать там свои массивы, или было бы проще сделать это так, как вы предложили, с помощью моего собственного ViewController? – Jacob

+0

Я исследовал это действительно быстро, прежде чем я ответил. Думаю, нет.Метод queryForTable хочет вернуть PFQuery. Суперкласс выполняет этот запрос, а затем вызывает objectsDidLoad. Есть некоторый шанс, что вы могли бы выполнить запросы отношений там, но мне кажется, что все это связано с тем, чтобы работать синхронно в этот момент. – danh

+0

Но я думаю, вы могли бы попробовать. Хитрость заключается в том, чтобы не сбой, потому что супер думает, что вы все закончили загрузку, когда срабатывает объектDidLoad. Для меня, когда мне приходится играть в трюки супер, время, чтобы покинуть супер. – danh

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