2010-06-03 65 views
0

在编写iPad应用程序时,我只是用带有“动态”谓词的fetchedResultsController遇到麻烦。似乎谓词的变化被忽略了。无论谓词如何变化,我总是得到第一次取数的结果...iPad:CoreData FetchedRequest忽略谓词变化

在iphone-env(3.1.x)上运行相同的代码没有问题!

样本:

- (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]; 
    } 
} 
可以

任何人的帮助PLZ?

顺便说一句:请原谅我痛苦的英语;-)

+0

我可以看到你是如何创建fetchedSearchResultsController所有时间(这样我就可以看到什么你正在使用的cacheName)?它可能会重用缓存,因为在测试缓存一致性时不考虑谓词。尝试使用deleteCacheWithName:清除缓存,每次调用setPredicate: – smountcastle 2010-06-03 14:34:19

+0

bingo时,似乎清除了适当的缓存,修复了我的问题! THX A LOT ... – Michael 2010-06-03 15:28:31

回答

4

您必须清除缓存,当您更改谓语或fetchRequest

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