MR_contextForCurrentThread is deprecated
LeChatNoir
Membre, Modérateur
Salut,
J'ai ce warning qui concerne Magical Record et j'ai décidé de m'y attaqué.
Sur SO, je trouve une réponse à ma question "on remplace par quoi ?" :
http://stackoverflow.com/questions/20535419/what-is-the-replacement-method-for-this-magicalrecord-deprecated-call
Du coup, je remplace mes :
[[NSManagedObjectContext MR_contextForCurrentThread] MR_save*]
par
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { /
/make your changes in the localContext
[localContext save*];
}];
Et guess what ? Ca ne sauvegarde plus !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Bon, je faisais
Et ça marche pas.
Mais en faisant
Ca fonctionne...
hmmmm...En fait non, ça ne fonctionne pas non plus.
L'une des opérations se fait dans une thread à part mais les autres se font dans la main thread. Aucune des 2 ne fonctionnent avec cette nouvelle méthode préconisée.
Bon, je ne m'en sors pas de ce truc. C'est rageant.
Voilà où j'en suis. Je requête un web service qui me renvoie un JSON.
Je boucle sur chaque élément et je créer une occurence de l'entité Topo.
Tout ça doit être sauvegardé de manière permanente.
Avant, je faisais ça et ça fonctionnait :
MR_contextForCurrentThread étant deprecated, je tente de le remplacer par les méthodes préconisées.
J'ai essayé ça mais ca sauvegarde absolument pas...
Je ne sais plus trop quoi faire...
Des fois, d'expliquer un truc ici, ça aide à comprendre son propre problème ::)
Le problème se situe dans ma méthode upsertTopo. C'est dans cette méthode que je créer les entités et je les créais avec la méthode MR_createEntity.
Or avec la nouvelle méthode qui utilise les blocks, il faut bien reprendre le contexte et utiliser :
MR_createEntityInContext:monContexte.
Et ça fonctionne tout de suite mieux
Bon, et pour les mises à jours, attention également aux méthodes de sélection.
MR_findFirstByAttribute:withValue
Doit être remplacée par
MR_findFirstByAttribute:withValue:InContext
Quand on est dans un block de saveWithBlock par exemple.