Проблемы с вызовом Parse getdataInthebackground в цикле for
Привет я пытаюсь запросить некоторые файлы из моей базы данных Parse, и я хочу, чтобы файлы были отсортированы в соответствии с временем обновления. У меня есть следующий код. Запрос работает, и результаты сортируются в соответствии с моим условием, но когда я загружаю файлы, используя getDataInBackground, а затем добавляю в массив. Файлы не отсортированы, и они выглядят случайными в массиве.
Так что мои вопросы
- Что я могу сделать, чтобы убедиться, что файлы в массиве расположены в том же порядке, что и результаты запроса?
- Любой способ проверить файлы / изображения по objectID в блоке завершения getDataInBackground?
PS Я не хочу использовать getData, так как я не хочу, чтобы он блокировал основной поток.
заранее большое спасибо
PFQuery *query = [PFQuery queryWithClassName:@"Photo"];
[query orderByDescending:@"updateAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *photoStacks, NSError *error)
{
if (!error) {
// The find succeeded.
for (PFObject *photoImage in photoStacks) {
PFFile *userImageFile = photoImage[@"image"];
[userImageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
if (!error) {
UIImage *image = [UIImage imageWithData:imageData];
// need to check object id before adding into the stack to make sure the order is right
[photoImageStacks addObject:image];
if ([photoImageStacks count] == photoStacksCount)
{
[photoPile setArray:photoImageStacks];
}
}
}];
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
1 ответ
Используйте точку останова и отслеживайте сначала photoImageStacks, а затем после ответа вам следует вызвать метод reload, если вы используете tableview или какой-либо делегат, или сгенерировать уведомление, чтобы вы могли соответствующим образом обновить пользовательский интерфейс после успешного ответа.