2012-02-11 1 views
1

これは間違っているかもしれませんが、ユーザーが検索バーに特定の特殊文字を入力すると、アプリがクラッシュします。これらには\と 'が含まれます。 「ない」とiOS:検索バーに特殊文字が入力されないようにするにはどうすればよいですか?

がどのように私はこの問題を回避作業に取り掛かる必要があるクラッシュの原因となります「しない」のような

アポストロフィは問題はその言葉に、ありますか?

検索文字列を使用して検索を行う前に多くの感謝

+2

ユーザーがこれらの文字を入力することを妨げるのではなく、文字を入力するときにクラッシュの原因を突き止める角度から問題に近づけないのはなぜですか? – Jasarien

答えて

2

、プレフィルター、それは、次のように:

NSString *safeSearchString = [[searchString componentsSeparatedByCharactersInSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]] componentsJoinedByString:@""]; 
+0

ニック、私はこのコードを次のように試しました:NSString * testString = tableModel.searchBar.text; [NSCharacterSet alphanumericCharacterSet] invertedSet] componentsJoinedByString:@ ""];しかし、私はエラーが発生します - 既知のクラスメソッドはありません..あなたは詳細を教えてください...私はこれを見て、人々が何でも好きなようにタイプすることを許可する方法として他の答えと組み合わせます。ありがとう! –

+0

私はinvertedSetの後に2番目を逃しました] - 私は私の答えを更新しました、今それを試してください。 –

+0

また、あなたのコードは間違っています - それはtestString = [NSCharacterSet componentsSeparatedByCharactersInSet:]ではない、それはtestString = [testString componentsSeparatedByCharactersInSet:...]である必要があります –

1

UISearchBarはUISearchBarDelegateプロトコルを利用しています。ユーザーが\ 'と入力するのを止めるには、searchBar:shouldChangeTextInRange:replacementText:メソッドをオーバーライドし、テキスト内の特殊文字を検出する場合は、単にNOを返します。

しかし、プログラムでこれらの特殊文字を処理する(無視するのではなく)ことは、ユーザーエクスペリエンスが向上します。結局のところ、なぜあなたはユーザーが「最初でない」と「していない」を検索していますか?

+0

こんにちはピーター、検索バーはフルテキスト検索のためのものであり、これらの言葉を含むことができます。 –

2

あなたは文字をエスケープし、実際にユーザーが望むものを無視したり削除したりするのはなぜですか?

SQLiteを使用していますか?そうであれば、別の一重引用符で一重引用符をエスケープできます。

+0

私はコアデータ内にsqliteストアを使用しています。私はあなたのアプローチが好きです(私はそれが上記のJaserianに似ていると推測します)。 –