2014-02-21 96 views
0

我有一個完美的工作的TableView。 現在我在TableView中加入了SearchBar component and Display ViewController的搜索。 我想根據NSArray _rotulos填充的標籤進行搜索。UISearchBar和TableViewController

@property (nonatomic, strong) NSArray *rotulos; 

我填的內容在我viewDidLoad方法(有更多的對象,但這裏只是一個例子)

_rotulos = @[@"Item 1", @"Item 2", @"Item 3", @"Block 1", @"Block 2",@"Block 3"]; 

我在我的cellForRowAtIndexPath方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"TableCell"; 
    TableCell *cell = (TableCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    //Configure the cell... 
     if (cell == nil) { 
      cell = [[TableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     } 

    long row = [indexPath row]; 

    cell.rotuloLabel.text = _rotulos[row]; 
    cell.descricaoLabel.text = _vinicola[row]; 
    cell.uvaLabel.text  = _uva[row]; 

    return cell; 
} 

該作品填充精細。 我在搜索欄中點擊並開始輸入時遇到問題。

這是進行此搜索的代碼。

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope 
{ 
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"_rotulos contains[c] %@", searchText]; 
    searchResults = [recipes filteredArrayUsingPredicate:resultPredicate]; 
} 

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 
{ 
    [self filterContentForSearchText:searchString 
      scope:[[self.searchDisplayController.searchBar scopeButtonTitles] 
       objectAtIndex:[self.searchDisplayController.searchBar 
       selectedScopeButtonIndex]]]; 

    return YES; 
} 

這個問題我已經在該行NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"_rotulos contains[c] %@", searchText]; 這是我的輸出終止應用程序由於未捕獲的異常「NSUnknownKeyException」,原因:「[< __NSCFConstantString 0x243c8> valueForUndefinedKey:]:此類不是密鑰值編碼符合關鍵_rotulos。'

我關注這個Tutorial但在我的情況下_rotulos不是某些classe的屬性,是NSArray。

我該如何解決? 對不起,如果忘了發佈的東西。

回答

0

您無法使用predicateWithFormat:構建此過濾器。使用predicateWithBlock:或以其他方式創建已過濾的數組(即不是filteredArrayUsingPredicate:)。

+0

我該怎麼做? 我正在尋找一些例子,但我沒有找到它。 –

+0

我不知道,因爲我不明白你想要做什麼。但看看這個代碼示例︰https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch08p438searchableTable/ch21p718sections/RootViewController.m看看'filterData:'實現,看看我如何形成根據用戶在搜索字段中鍵入的內容爲我的表格過濾的數組。 – matt

+0

我想要做的是過濾NSArray _rotulos(填充我的TableView)將此過濾數組存儲在我的NSArray _resultadosBusca中,並用此新數據重新加載我的TableView。 –