検索バーをテーピングすると、次の例外が発生します。"'NSInvalidArgumentException', reason: '-[NSIndexPath isEqualToString:]:unrecognized selector sent to instance 0x1d52d9b0'"
シミュレーターを使用してうまくいけば、すべて正常に動作します。しかし、実際のデバイスではアプリがクラッシュします。
デバッグのために、関連するビューコントローラーのすべてのメソッドにブレークポイントを配置しましたが、アプリがクラッシュする前にテーピングした後、どのメソッドも呼び出されません。その後、UISearchBarDelegate
プロトコルとUISearchDisplayDelegate
プロトコルからすべてのメソッドを実装しようとしました。ここでも、ブレークポイントといくつかのNSLog
デバッグ出力を配置しました。クラッシュ前のみ- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
が呼び出されます。
どこを見ればいいのか、何を試せばいいのか、何か考えはありますか? シミュレーターで例外が発生しない理由がわかりません。本当にどうなるか気になります(;_;)
バグの原因となっているコードは次のとおりです。
NSString *labelText;
if ([self.searchDisplayController isActive]) {
if (self.filteredStrings > 0) {
labelText = [self.filteredStrings objectAtIndex:indexPath.row];
}
}
else
{
...
}
cell.textLabel.text = labelText;
OK、ここに修正コードがあります:
NSString *labelText;
if ([self.searchDisplayController isActive]) {
if (self.filteredStrings > 0) {
labelText = [self.filteredStrings objectAtIndex:indexPath.row];
cell.textLabel.text = labelText;
}
}
else
{
...
cell.textLabel.text = labelText;
}