2010-07-29 3 views
0

Мне нужно показать индикатор активности для пользователя во время операции с базой данных, которая занимает несколько секунд.Асинхронный вызов базы данных/ActivityIndicator при доступе к базе данных

У меня настроен и работает UIActivityIndicator, но когда я вызываю [myActivity startAnimating]; и следующий вызов - делать операции с базой данных, он никогда не показывает мне активность.

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

Благодарим за любую связанную информацию.

ответ

1

Главный пользовательский интерфейс, вероятно, замерзает при выполнении запроса к базе данных, отсюда и замороженная анимация.

Как насчет запуска операции базы данных в фоновом потоке:

[myActivity startAnimating]; 
[self performSelectorInBackground:@selector(someMethod) withObject:nil]; 


-(void)someMethod { 
    // do something in the background here. 
    // long running task 
    [myActivity performSelectorOnMainThread:@selector(stopAnimating) withObject:nil]; 
} 

Одна вещь, чтобы отметить, если вы используете Core Data на фоновом потоке, чтобы обновить дату необходимо синхронизировать их так, изменения появляются на главной (прочитайте основные данные/Threading для получения дополнительной информации)

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