2013-07-01 3 views
0

Je travaille avec l'application de synchronisation. Comment puis-je "grossièrement" ouvrir la base de données (Core Data) pour effectuer 10 000 opérations (supprimer, enregistrer, etc.) et ensuite fermer?Enregistrement de 10 000 enregistrements Données de base

Je comprends que fonctionne maintenant comme ceci:

  • base de données ouverte
  • action faite
  • fermés et ainsi 10.000 fois.

corriger si mal, je serai trop heureux

Répondre

1

Il suffit de faire vos opérations 10.000 et à la fin enregistrer le contexte de l'objet géré. Assurez-vous simplement d'enregistrer à la fin et non après chaque objet. Cela permettra d'accélérer considérablement les progrès.

+3

Je trouve avec cela qu'il y a un équilibre entre la vitesse et l'utilisation de la mémoire. Plus vous changez sans enregistrer, plus la mémoire est utilisée. La mémoire est ensuite effacée lors de la sauvegarde. Vous aurez donc peut-être du mal à tout mettre à jour en une fois. – Fogmeister

+0

J'ai beaucoup de méthodes comme ceci: + (utilisateur *) userWithLogin: (NSString *) se connecter { NSPredicate * prédicat = [NSPredicate predicateWithFormat: @ "login ==% @", login]; NSArray * sortDescriptors = [NSArray arrayWithObject: [NSSortDescriptor sortDescriptorWithKey: @ "connexion" croissant: YES]]; AGDBWorker * dbw = [AGDBWorker sharedWorker]; Utilisateur * user = (Utilisateur *) [dbw fetchManagedObjectWithEntityName: entityName predicate: predicate sortDescripteurs: sortDescripteurs]; retourner l'utilisateur; } et je vais à cette méthode un grand nombre de fois – user2538941

+1

Je ne suis pas sûr de ce que vous entendez par le message ci-dessus. Fogmeister a raison, donc j'ajouterais un conditionnel pour sauver tous les 1 000 –

Questions connexes