2013-08-23 6 views
0

У меня есть контроллер табличного представления, который извлекает объекты из базы данных, размещенной на parse.com. На данный момент у меня есть контроллер представления для всех объектов в базе данных для хранения в массиве. Прямо сейчас в базе данных есть 100 объектов, и мне бы хотелось, чтобы контроллер табличного представления извлек 20 из этих объектов и отобразил их, затем попросите его отобразить и отобразить еще 20, когда таблица прокручивается вниз.API Parse.com: как запросить объекты поэтапно?

Вот мой метод инициализации:

- (id)initWithStyle:(UITableViewStyle)style{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     //create the array, set the table view size, then populate it. 
     listings = [[NSMutableArray alloc] init]; 
     [self populateArrayWithListings]; 
    } 
    return self; 
} 

[self populateArrayWithListings]; просто заполняет массив listings с 100 объектов в базе данных. У меня есть этот метод, чтобы определить, когда контроллер представления таблицы прокручиваются в нижней части:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView.contentOffset.y + scrollView.bounds.size.height > scrollView.contentSize.height * 0.9) { 

    } 
} 

Вопрос в том, что я должен положить внутри этих скобок, чтобы он принести следующие 20 объектов в базе данных?

+0

Если вы используете UITableView, он будет длинным только ячеек, которые должны появиться на экране, а не во всех из них. Вам не нужно беспокоиться об этом. Это управление памятью для вас. Просто убедитесь, что вы правильно создаете ячейку. Отвечает ли это на ваш вопрос? – rocir

+0

Вы также можете написать свой код запроса? Используете ли вы 'limit' и' skip' (из раздела «Ограничения запросов» в [Документах по анализу iOS] (https://parse.com/docs/ios_guide#queries-constraints/iOS)? – Will

+0

Это полезный ответ да , но я думаю, что по-прежнему было бы более эффективным для меня запрашивать инкрементно, поскольку в базе данных не всегда будет 100 объектов. Ожидаю, что это число будет увеличиваться на много в долгосрочной перспективе, а запросы для 1000+ объектов могут в то время как. –

ответ

2

Я сделал то же самое, что вам нужно.

FQuery *postQuery = [PFQuery queryWithClassName:@"Challenge"]; 
[postQuery addDescendingOrder:@"createdAt"]; 
[postQuery includeKey:@"userId"]; 

[postQuery setSkip:[mutArrPagingResponce count]]; 
[postQuery setLimit:20]; 

// Declare this array gloabally or keep it in another array 
NSMutableArray *mutArrPagingResponce = [[postQuery findObjects] mutableCopy]; 

Это будет работать так, как вы пытаетесь достичь. Дайте мне знать, если что-то еще потребуется.

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