周りの行を含む、比較的大きなSQLiteデータベースを持つアプリがあります。15,000
アプリの開始時に、SELECT * FROM TABLE
クエリを実行しNSMutableArray *data
、クラスの含まれる要素を設定しProverbRow
ます。各ProverbRow
オブジェクトは、データベースの 1 行のデータに対応し、データベースの各セルに対応するNSString
およびを含みます。NSInteger
したがって、事実上、NSMutableArray *data
オブジェクトはSQLiteデータベースのコピーです。
さて、質問に...
この例のように、アプリに検索機能を追加したい:
ユーザーが「abc」と入力して検索をタップすると、オブジェクト内の文字列「abc」が部分文字列として含まれるdata
すべての要素を取得したいと考えています。したがって、「abcde」、「qqqabcqqq」などの文字列を取得する必要があります。NSString *proverb
ProverbRow
現在、これを達成するために、次のようなクエリを発行していますSELECT * FROM PROVERB WHERE PRONUNCIATION LIKE abc
。クエリから返されたオブジェクトはNSArray
、さらに使用するために別のオブジェクトに保存されます。
ここで、返されるオブジェクトの数が少ない場合、このクエリは十分に速く完了しますが、行数が多いと時間がかかります。
クエリを起動する以外に、これを達成するためのより迅速な方法があるかどうか疑問に思っていました。すでに入力されているdata
オブジェクトを使用してループを実行し、部分文字列などを同等にすることは可能ですか? 私の主な関心事は、検索にかかる時間を短縮することです。
ありがとう!