2013-07-01 66 views
0

我使用魔法記錄的核心數據,我嘗試使用表格視圖中的搜索欄過濾數據。核心數據項目中的搜索欄

我寫兩個方法來獲取細胞的行數和名稱:

-(int) dammiNumeroCercati:(NSString *)searchBar 
{ 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nome CONTAINS [cd] %@", searchBar]; 

    NSArray*arra = [Ricetta MR_findAllSortedBy:@"nome" ascending:YES withPredicate:predicate]; 


    return arra.count; 
} 
-(NSString*) dammiNomeRicettaCercata:(NSString *)searchBar mostrataNellaCella: (int) cella 
{ 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nome CONTAINS [cd] %@", searchBar]; 

    NSArray *arra = [Ricetta MR_findAllSortedBy:@"nome" ascending:YES withPredicate:predicate]; 
    Ricetta*ctn = arra[cella]; 

    return [NSString stringWithFormat:@"%@", ctn.nome]; 
} 

然後我打電話numberOfRowsInSection這裏面的方法:和的cellForRowAtIndexPath:內的,如果週期:

if (self.mySearchBar.isFirstResponder){ 

// the above methods 

} else { 
// the normals methods to have all the data 
} 

有人知道我錯在哪裏,或者如果我想念一些事情?

+0

是什麼問題?你如何調用上述方法?就像你傳遞了什麼論據? – govi

+0

即使它工作:一次又一次調用MR_findAllSortedBy是非常無效的。你應該看看NSFetchedResultsController。 –

+0

@ govi問題是搜索欄不起作用 – Totka

回答

0

searchBar通常是一個UISearchBar,而不是一個字符串。

您應該使用searchBar.text並在您的方法中處理該問題。

此外,在您的表視圖的數據源方法,你必須確保哪個表視圖導致回調,然後返回正確的計數/字符串。通常這是通過比較兩個表(原始表格視圖和搜索結果表格視圖)的指針來檢查的。

-(NSUInteger)tableView:(UITableView*)tableView 
     numberOfRowsInSection:(NSUInteger)section { 

    if (tableView == _tableView) { 
     // return the usual row count 
    } 
    return [self dammiNumeroCercati:_searchBar.text]; 
}