Configuration:Un NSFetchedResultsController vs plusieurs UITableViews - un seul UITableView obtient des mises à jour?
J'ai plusieurs UITableViewControllers (tvc) qui instancient tous un NSFetchedResultsController (frc) distinct. Toutes ces frc-s, cependant, utilisent le même ManagedObjectContext (moc).
Scénario:
Parfois, d'un des TVC-s, je lance un processus d'arrière-plan pour mettre à jour les données. Le processus d'arrière-plan met à jour les données dans un thread séparé et appelle finalement [moc mergeChangesFromContextDidSaveNotification:] sur le thread principal. Ces changements devraient ensuite se propager à frc, et [frcDelegate controllerDidChangeContent:] devrait être appelé. Cela fonctionne bien ... mais seulement pour le frcDelegate dont tvc associé a initié la mise à jour. (Tous les TVC-s agissent comme frcDelegate pour leur frc.)
Comportement attendu:
puisque tous les frc-s sont liés au même moc, tous les frc-s doit ramasser les changements, et [frcDelegate controllerDidChangeContent:] devrait être appelé pour chacun d'eux.
Comportement réel:
un seul [frcDelegate controllerDidChangeContent:] est appelée. Pourquoi est-ce que je vois un comportement réel plutôt que prévu? Comment dois-je déboguer cela? Ou est-ce le bon comportement?
Frc observe uniquement les modifications dans l'entité spécifiée dans sa requête d'extraction. Modifiez-vous les entités que les autres frc observent dans ces mises à jour? – gerry3
Vous devriez soumettre ceci comme réponse parce que c'est exactement cela. (Devrait y réfléchir à deux fois avant de poster à 5h du matin ...) Les objets fraîchement reçus sont tous la même entité, mais les frc-s ont des prédicats différents, et les nouveaux objets correspondent au prédicat d'un seul frc particulier. Je devrais résoudre ce problème en ajoutant plus d'informations à l'objet avant de le sauvegarder, afin qu'il corresponde aux prédicats des frc-s que je veux qu'il corresponde. – Jaanus