2010-06-03 2 views
0

Lors de la programmation d'une application pour iPad, je rencontre des problèmes avec l'utilisation d'un fetchedResultsController avec un prédicat "dynamique". il semble que les modifications apportées au prédicat soient ignorées. Peu importe comment le prédicat change, je reçois toujours le résultat de la première recherche ...iPad: CoreData FetchedRequest ignore les modifications du prédicat

même code fonctionne sans problèmes sur iphone-env (3.1.x) !!

échantillon:

- (void)performSearch:(NSString *)searchText { 
    self.displaySearchResults = TRUE; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"searchWords contains[cd] %@", searchText]; 
    [self.fetchedSearchResultsController.fetchRequest setPredicate:predicate]; 

    NSError *error = nil; 
    if (![self.fetchedSearchResultsController performFetch:&error]) { 
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
    } 

    if(deviceIsIPad) { 
    [self showSearchResults]; 
    } 
    else { 
    [cookBookOverview reloadData]; 
    } 
} 

quelqu'un peut-il aider plz?

BTW .: excuser mon douloureux anglais ;-)

+0

Puis-je voir comment créer votre fetchedSearchResultsController (donc je peux voir ce que cacheName que vous utilisez)? Il peut être en train de réutiliser le cache car le prédicat n'est pas pris en compte lors de la vérification de la cohérence du cache. Essayez d'utiliser deleteCacheWithName: pour effacer le cache, chaque fois que vous appelez setPredicate: – smountcastle

+0

bingo, il semble que la suppression du cache approprié a résolu mon problème! THX A LOT ... – Michael

Répondre

4

Vous devez effacer le cache tout le temps lorsque vous modifiez ou prédicat fetchRequest

// clear cache 
[NSFetchedResultsController deleteCacheWithName:@"CacheName"]; 
Questions connexes