不用代碼片段就可以解決這個錯誤。然後,我認爲這個錯誤是在滾動tableview &之後選擇搜索欄的時候,你正在讓你的數組爲空或者刪除所有的對象從中。
望着看來錯誤時選擇終止應用程序搜索欄 由於未捕獲的異常「NSRangeException」,原因是:「 - [NSMutableArray的objectAtIndex:]:指數31超越界限空陣」
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar;
而在另一方面,一旦表滾動創建新的細胞尋找,因爲所有對象的數組。但indexPath對象從陣列已經被移除,它只是崩潰您應用程式&顯示此錯誤。
所以我建議你採取兩個不同的陣列,你有完整的記錄&然後其他搜索結果&然後重新加載表使用數組。
肯定會擺脫這個錯誤。否則,請確保在搜索完成之前,不要刪除陣列中的所有對象。
這是您可以用於搜索的邏輯。 :)
(無效)搜索欄:(的UISearchBar *)theSearchBar textDidChange:(的NSString *)SEARCHTEXT {
//第一刪除所有對象。 copyListOfItems = [[NSMutableArray alloc] init]; [copyListOfItems removeAllObjects];
如果([SEARCHTEXT長度]> 0){
searching = YES;
tblView.scrollEnabled = YES;
NSString *searchText = searchBar.text;
NSLog(@"%@",searchText);
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
for (NSMutableDictionary *dictionary in YourMainArray)
{
NSRange titleResultsRange = [[dictionary valueForKey:@"English"] rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
[copyListOfItems addObject:dictionary];
}
[searchArray release];
searchArray = nil;
} 否則{
searching = NO;
tblView.scrollEnabled = YES;
[searchBar resignFirstResponder];
}
[tblView reloadData]; }
我們可以看到一些代碼嗎? – Moshe 2011-02-25 07:22:52