отображать информацию в реальном времени для пользователя в приложении Ipad? - PullRequest
0 голосов
/ 11 июля 2010

У меня есть приложение ipad, которое загружает данные удаленно в основные данные, я должен был постоянно отображать обновление статуса для метки, но похоже, что все в моем методе должно быть завершено, прежде чем сообщение будет отправлено в UILabel.

Как мне обойти это?

Пример кода:

-(void) importCollections {
/* code left out for brevity */

    for (int j=0; j <[[myCollections objectAtIndex:i] count]; j++)
            {

                Collection  *entity = (Collection*) [NSEntityDescription insertNewObjectForEntityForName:@"Collection" inManagedObjectContext:managedObjectContext];
                [entity setCollectionName:[[[myCollections objectAtIndex:i] objectAtIndex:j] valueForKey:@"CollectionName"]];
                [entity setCollectionID:[[[myCollections objectAtIndex:i] objectAtIndex:j] valueForKey:@"CollectionID"]];
                [entity setManufacturer:[manufacturers objectAtIndex:i]];

                NSError *error;

                if (![managedObjectContext save:&error]) {
                    // Handle the error.
                    NSLog(@"%@",error);
                }
                importStatus.text =[NSString stringWithFormat:@"importing collection: %@", entity.CollectionName];
            }
}

В приведенном выше коде importStatus - это UILabel, который мне нужно постоянно обновлять, но, кажется, он ждет, пока все в этом методе не будет завершено.

1 Ответ

1 голос
/ 11 июля 2010

Вы, вероятно, звоните importCollections из основного потока. Таким образом, вы не даете UIKit возможности обновить пользовательский интерфейс, пока вы блокируете основной поток и не возвращаетесь в цикл выполнения.

Вы должны выполнять длительные вычисления или загружать ресурсы в фоновом потоке. Поскольку вы можете обновлять только элементы пользовательского интерфейса из основного потока, вы должны заключить ваши вызовы UIKit в performSelectorOnMainThread:withObject:waitUntilDone:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...