2015-10-14 67 views
1

我有一個數組中的結果列表,其中包含每個主對象的名稱和URL。搜索2維數組爲tableView objC

的名字是什麼將被搜索和網址是與TableView中每行顯示圖像。

如何搜索和篩選只有第一個子對象的結果?

- (void)filterContentForSearchText:(NSString*)searchText scope: (NSString*)scope 
{ 
    [self.searchResult removeAllObjects]; 
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@", searchText]; 

    self.searchResult = [NSMutableArray arrayWithArray: [self.TableData filteredArrayUsingPredicate:resultPredicate]]; 

} 

這不會在搜索結果中返回任何內容。它有效,當我有一個單一的數組。那麼我怎樣才能通過TableData只搜索第一個子對象而不是URL。

這是我在以前的viewController填充陣列

for(NSDictionary *eachEntry in json) 
{ 
    NSString *entry = [eachEntry objectForKey:@"client"]; 
    NSString *imageEntry = [eachEntry objectForKey:@"imgLogo"]; 
    [_tableData addObject:[NSMutableArray arrayWithObjects:entry, imageEntry, nil]]; 
} 

編輯

我仍然希望搜索結果中包含兩個對象,因爲它會使顯示正確的圖像更容易

回答

1

如果你把一本字典的入口和圖像,您可以搜索使用的關鍵。

for(NSDictionary *eachEntry in json) 
{ 
    NSString *entry = [eachEntry objectForKey:@"client"]; 
    NSString *imageEntry = [eachEntry objectForKey:@"imgLogo"]; 
    [_tableData addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:entry, @"entry", imageEntry, @"imageEntry", nil]]; 
} 

- (void)filterContentForSearchText:(NSString*)searchText scope: (NSString*)scope 
{ 
    [self.searchResult removeAllObjects]; 
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"entry contains[c] %@", searchText]; 

    self.searchResult = [NSMutableArray arrayWithArray: [self.TableData filteredArrayUsingPredicate:resultPredicate]]; 
} 
+0

真棒回答老兄,這是一種享受,感謝您的時間 – Rob85

1

嘗試了與您提供的相同的代碼。它正確地給出了過濾結果。確保您的數據已填充。

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [searchResult removeAllObjects]; 

    tableData = [[NSMutableArray alloc] init]; 

    NSString *entry = @"client"; 
    NSString *imageEntry = @"imageEntry"; 
    [tableData addObject:[NSMutableArray arrayWithObjects:entry, imageEntry, nil]]; 


    NSString *searchText = @"client"; 
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@", searchText]; 

    searchResult = [NSMutableArray arrayWithArray: [tableData filteredArrayUsingPredicate:resultPredicate]]; 
    NSLog(@"%@", searchResult); 
} 

enter image description here

+0

噢好吧我現在要看看,我認爲這也會搜索網址,是否有阻止它,否則我會得到沒有任何意義的結果。 – Rob85

+0

你可以嘗試添加更多的對象,看看它是否工作,只需重複這一行[tableData addObject:[NSMutableArray arrayWithObjects:entry,imageEntry,nil]];幾次。我的TableData肯定有數據init – Rob85

+0

是向tableData添加了5-6個對象。並獲得正確的結果。 – Irfan