0

私はiPhoneプログラミングに不慣れで、私の現在のプロジェクトにちょっとこだわっています。大量のデータを含むテキストファイルを取得しました。データは次のように並べ替えられます。

51398030 10003254 80211593/94     1301281744 TOMTOM100  
51398030 10003254 80211593/94     1301281744 TOMTOM101  
51398030 10003254 80211593/94     1301281745 TOMTOM102  
51398030 10003254 80211593/94     1301281745 TOMTOM103  
51398033 10003254 80211595        1301281744 TOMTOM100  
51398033 10003254 80211595        1301281744 TOMTOM101  
51398033 10003254 80211595        1301281745 TOMTOM102  
51398033 10003254 80211595        1301281745 TOMTOM103  
51398029 10003254 80211597/98     1301281744 TOMTOM100  
51398029 10003254 80211597/98     1301281744 TOMTOM101  
51398029 10003254 80211597/98     1301281745 TOMTOM102  
51398029 10003254 80211597/98     1301281745 TOMTOM103

このtxtファイルをすでにインポートし、各行をオブジェクトとして含むNSMutableArrayを作成しました。これで、ユーザーが数値を入力できるテキストフィールドができました。これで、アプリはテキストファイルを調べて、この番号を含む行を並べ替える必要があります。

私はすでにhttps://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Strings/Articles/Scanners.html#//apple_ref/doc/uid/20000147-BCIEFGHCを見ました

しかし、私は開始する方法がわかりません。

これは私がどこまで得たかです:

    NSData *tmpData = [NSData dataWithContentsOfURL:[NSURL       URLWithString:trackTraceFileUrlName] ];
    NSLog(@"%@",trackTraceFileUrlName);
    //convert data to string 
    NSString *tmpString = [[NSString alloc] initWithData:tmpData              encoding:NSUTF8StringEncoding];
    NSArray *piecesArray = [tmpString componentsSeparatedByString:@"\n"];
    NSMutableArray *trackTraceContent = [NSMutableArray arrayWithArray:piecesArray];
    NSLog(@"*%@*",trackTraceContent);
4

3 に答える 3

1

以下のコードを試してください

NSString *str = <string on which you want to search>;

    NSRange r;
    if ((r = [str rangeOfString:@"the string you want to search"]).location != NSNotFound)
        //string found..

配列があると思うので、変更した配列を試してください

for (NSString *str in <array>)
{
    NSRange r;
    if ((r = [str rangeOfString:@"the string you want to search"]).location != NSNotFound)
        //string found..
}
于 2013-02-01T09:41:25.157 に答える
0

ユーザーが入力した数値がデータの主な検索であり、それが一意である場合は、数値をキーとして使用して、データを配列ではなく辞書に保持します。

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
MyObject obj = ...;
[dictionary setObject:obj forKey:obj.number];
// etc.

これがまさに辞書(ハッシュテーブル)の目的であるため、ルックアップははるかに高速になります。

注:Objective-Cコレクションクラスはオブジェクトのみを保持できるため、プリミティブ型ではなく、オブジェクトを使用して数値を表す必要があります。NSNumber

番号一意でない場合でも、この手法を使用できますが、配列の辞書を保持する必要があり、その配列のキーとして番号を使用するため、多少複雑になります。ただし、これを行うとパフォーマンス上のメリットが得られます。

于 2013-02-01T09:36:30.153 に答える