2010-07-29 5 views
0

Je dois afficher un indicateur d'activité à l'utilisateur pendant une opération de base de données qui prend quelques secondes.Appel de base de données asynchrone/Indicateur d'activité lors de l'accès à la base de données

J'ai le UIActivityIndicator configuré et fonctionnel, mais quand j'appelle [myActivity startAnimating]; et le prochain appel est de faire les opérations de base de données, il ne me montre jamais l'activité.

Je pense que cela pourrait être résolu en faisant un accès asynchrone à la base de données, mais je ne sais pas comment faire cela.

Merci pour toute information connexe.

Répondre

1

L'interface utilisateur principale est probablement gelée lorsque vous exécutez votre requête de base de données, d'où l'animation gelée.

Comment sur l'exécution de l'opération de base de données dans un thread d'arrière-plan:

[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]; 
} 

Une chose à noter, si vous utilisez Core Data sur le thread d'arrière-plan pour mettre à jour ce jour vous devez les synchroniser pour que les modifications apparaissent sur la principale thread (lire sur Core Data/Threading pour plus d'informations)

Questions connexes