因此,我將自定義單元格添加到自定義tableview的搜索欄,並給出錯誤。Xcode搜索欄 - 無法通過包含NSStrings的NSObjects進行搜索
- [遊戲rangeOfString:選項:]:無法識別的選擇發送到實例0x170244e60 2016年10月15日15:41:49.557956 CustomCellApp [25930:7889617]
***終止應用程序未捕獲的,由於異常「NSInvalidArgumentException」,原因:「 - [遊戲rangeOfString:選項:]:無法識別的選擇發送到實例0x170244e60
我被含有包含字符串(gamesArray)NSObjects和這些字符串我的陣列填充我的tableview從一個JSON數組(jsonArray)中獲取它,全部來自一個PHP文件連接到具有所有字符串的MYSQL服務器。
下面是搜索欄的代碼:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if (searchText.length == 0) {
isFiltered = NO;
} else {
isFiltered = YES;
filteredGamesArray = [[NSMutableArray alloc] init];
// ----- Problem Method ----- //
for (NSString *str in gamesArray) {
// ----- Crashes Here ----- //
NSRange stringRange = [str rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (stringRange.location != NSNotFound) {
[filteredGamesArray addObject:str];
}
}
// ------------------------------------ //
}
[myTableView reloadData];
}
下面是的tableView代碼:
// Configuring the cell
Game * gameObject;
// Showing either Normal List or Filtered List
if (!isFiltered) {
gameObject = [gamesArray objectAtIndex:indexPath.row];
}
else {
gameObject = [filteredGamesArray objectAtIndex:indexPath.row];
}
下面是從服務器 代碼它增加了從服務器到jsonarray的字符串,然後將它添加到一個名爲gamesArray的數組的NSObject中
NSString * gID = [[jsonArray objectAtIndex:i] objectForKey:@"id"];
NSString * gName = [[jsonArray objectAtIndex:i] objectForKey:@"gameName"];
NSString * gLabel1 = [[jsonArray objectAtIndex:i] objectForKey:@"gameLabel1"];
NSString * gLabel2 = [[jsonArray objectAtIndex:i] objectForKey:@"gameLabel2"];
NSString * gLabel3 = [[jsonArray objectAtIndex:i] objectForKey:@"gameLabel3"];
任何幫助將不勝感激! 我該如何解決這個問題?有任何想法嗎?謝謝
我認爲問題是,當搜索時,程序看到它有一個數組來搜索gamesArray,但是當它進入它內部時,它有5個NSObject,每個都包含字符串,所以它不工作,因爲它不知道該怎麼做。
作爲一個解決方案,我怎樣才能讓它在通過搜索欄搜索的gamesArray,直接在1 NSObject的,則gameName,閱讀完所有的琴絃在NSObject的被稱爲的gname
例如,這段代碼針對特定NSObject的的gamesArray
[[gamesArray objectAtIndex:indexPath.row] valueForKey:@"gameName"];
好吧它美麗的一部分工作,我不會再犯錯,但無論我只搜索桌面視圖的第一個遊戲顯示。有任何想法嗎?謝謝btw – BroSimple
如果這段代碼解決了問題中的問題,你是否介意接受它?評論中的問題是一個不同的問題,可能與上面問題中未顯示的代碼有關。我建議在搜索執行的不同點上調試並檢查filteredGamesArray的內容。 – Lytic