int型のクラスメンバー「total」があります。述語の属性として「total」を使用しています。
[NSPredicate predicateWithFormat: @"total ==%i", [searchText intValue]];
この述語は、検索の実行時に一致を収集するために使用されます。述語は、iVarに格納されているsearchText
、テキスト型のユーザーの検索値を、int型の属性「total」と比較します。
私はこのように簡単に同等性をチェックすることができます:
NSPredicate *filter = [NSPredicate predicateWithFormat: @"total ==%i", [searchText intValue]];
ここで、述語をより堅牢にし、テキスト検索のように機能させたいので、ユーザーが検索ボックスに「5」と入力すると、述語は5,52,550などを返します。
つまり、属性である「total」を述語フィルターの文字列として扱い、BEGINSWITHまたはCONTAINSを使用できるようにします。
私の問題は、属性「total」が文字列ではなくint型であるため、スタックしていることです。
これが私の意図です(擬似コード)
NSPredicate *filter = [NSPredicate predicateWithFormat: @"[total stringValue] BEGINSWITH %@", searchText];
または
NSPredicate *filter = [NSPredicate predicateWithFormat: @"CAST(total, 'NSString' ) BEGINSWITH %@", searchText];
クラスに文字列型を作成せずにこれを行うにはどうすればよいですか?
ありがとう!