Проблемы с вызовом Parse getdataInthebackground в цикле for

Привет я пытаюсь запросить некоторые файлы из моей базы данных Parse, и я хочу, чтобы файлы были отсортированы в соответствии с временем обновления. У меня есть следующий код. Запрос работает, и результаты сортируются в соответствии с моим условием, но когда я загружаю файлы, используя getDataInBackground, а затем добавляю в массив. Файлы не отсортированы, и они выглядят случайными в массиве.

Так что мои вопросы

  1. Что я могу сделать, чтобы убедиться, что файлы в массиве расположены в том же порядке, что и результаты запроса?
  2. Любой способ проверить файлы / изображения по 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 или какой-либо делегат, или сгенерировать уведомление, чтобы вы могли соответствующим образом обновить пользовательский интерфейс после успешного ответа.

Другие вопросы по тегам