0

現在、アプリの検索機能に取り組んでいます。アプリは CoreData を使用します。ここに私の質問があります。

NSMutableArray メソッドを使用してすべてのデータ内の文字列を検索する必要がある場合、使用するメソッドを決定するのに苦労しています。

NSArray メソッド: これは、NSArray を使用した検索機能の意味を設定するためのものです。

NSArray* inputArray = [NSArray arrayWithObjects:@"dog", @"cat", @"fat dog", @"thing", @"another thing", @"heck here's another thing", nil];

NSMutableArray* containsAnother = [NSMutableArray array];
NSMutableArray* doesntContainAnother = [NSMutableArray array];

for (NSString* item in inputArray)
{
if ([item rangeOfString:@"another"].location != NSNotFound)  
[containsAnother addObject:item];
}

CoreData メソッド: まだ作業中です。申し訳ありません。私はそれを実装する方法について考えています。

問題は、CoreData は SQLite で動作するため、検索が効率的になるように使用するのが最善であると考えていることです。しかし、それは私の意見です。多くのレコードが保存され始めたときにこの機能が使用される可能性が最も高いため、どの方法が最も効率的かを知りたかっただけです。

4

1 に答える 1

1

一般に、述語を持つマネージド オブジェクトは、より高速な (そしてよりメモリ効率の良い) SQL 検索エンジンを使用できるため、より高速になる傾向があります。

この例では、テーブル全体をメモリにコピーしてから特定のアイテムを選択する必要があるように見えますが、これは場所が空のすべてのアイテムを単純に要求するよりも明らかに効率が悪くなります。(もちろん、問題は空のフィールドの述語をどのように記述するかということです。私は Core-Data にまだ十分に満足しておらず、それについてコメントすることはできません)。

言い換えれば、あなたの質問は、データベースからすべてのデータをコピーしてから、必要なアイテムを確認するか、必要なアイテムをコピーするだけで、どちらが速いかということになります。私はどちらを信じるか知っています。

于 2012-04-28T03:07:10.997 に答える