私は検索フィールドを実装しています。このフィールドでは、ユーザーが文字列を入力してビューに表示される項目をフィルタできます。表示される各オブジェクトにはkeywords
の多対多の関係があり、そのキーワードに基づいてオブジェクトをフィルタリングできるようにしたいと考えています。各キーワードオブジェクトはname
性質を持っているので、私はこのようになりますフィルタリングを行うためにNSPredicateを設定している:NSPredicate大文字と小文字を区別しない多対多マッチング
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS %@", self.searchString];
これは動作しますが、問題は、検索では大文字と小文字が区別されることで、その場合キーワードは大文字ですが、ユーザーはすべて小文字で入力します。一致するものは見つかりません。私は次の修正を試みました:
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS[c] %@", self.searchString];
しかし、これはマッチングの大文字と小文字の区別に違いはありません。単純な述語を使ってこの大文字と小文字を区別しないマッチングを行う方法はありますか?または、キーワードクラスにカスタムアクセサを実装する必要がありますか? lowercaseName
メソッドを作成し、検索文字列の小文字のバージョンと照合しますか?
補足: カスタムアクセサを追加する回避策は、NSPredicateを手動で使用するには問題ありませんが、Core DataでNSFetchRequestを使用する場合はまったく機能しません。コアデータで定義された属性モデル。
私は欠けていた方法がなければならないことを知っていました。魅力のように動作します。ありがとう! –