2010-06-03 75 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"];