2010-06-03 5 views
0

J'ai un NSArrayController qui est lié à une classe dans mon contexte d'objet géré. Pendant l'exécution, NSArrayController peut avoir un certain nombre de prédicats de filtre différents appliqués. À certains intervalles, je veux parcourir le contenu de mon NSArrayController indépendamment du prédicat de filtre qui lui est appliqué.Désactivation temporaire de NSArrayController filterPredicate ou consultation de ManagedObjectContext?

Pour ce faire, j'ai mis le filterPredicate à zéro, puis je l'ai rétabli après avoir parcouru mon tableau. Cela semble fonctionner, mais je me demande si c'est la meilleure pratique? Dois-je interroger mon contexte d'objet géré manuellement?

NSPredicate *predicate = nil; 
predicate = [myArrayController filterPredicate]; 
[myArrayController setFilterPredicate:nil]; 
for(MyManagedObject *object in [myArrayController arrangedObjects]) { 
    // ... 
} 
[myArrayController setFilterPredicate:predicate]; 

Répondre

0

Si vous êtes uniquement intéressé à obtenir tous les cas Foo sans filtre itérer puis à travers les programme, pourquoi ne pas use an NSFetchRequest directement?

Il est assez facile d'utiliser des descripteurs de tri dans votre requête de recherche si vous demandez uniquement les -arrangedObjects de votre contrôleur.

4

Vous pouvez récupérer tout le contenu d'un contrôleur RAID, indépendamment du prédicat de filtre appliqué, à l'aide du sélecteur content:

[myArrayController content] 

Vous n'avez pas besoin de réinitialiser tout le prédicat de filtre.

Questions connexes