2012-04-25 12 views
0

私は、次の値を持っていると私はソートするセレクタを使用してNSDictionaryから引いていた値とNSArrayありますNSArrayのソート

  1. ジョン
  2. ブライアン
  3. アレックス を....
  4. デイブ

彼らは文字列として比較されているので、私は、以下のコードを使用します私は、彼らが順番1のどこにいるか、これらの値を正しく並べ替えるために取得できますか...

  • ブライアン

    NSArray *array = [[[self myDictionary] allValues] sortedArrayUsingSelector:@selector(compare:)]; 
    
    1. ジョン
    2. デイブ

    を:、リストがバックが付属しています、2,3など?ソートのいくつかの例を見てきましたが、私のような例は見つかりませんでした。私は、私がobjective-cとiOSの新人だと言及しなければならない。どんな助けでも大歓迎です。

    ありがとうございます!

  • 答えて

    1

    私は実際に解決策を見つけ出すことができました。

    NSArray *array = [[[self myDictionary] allValues] sortedArrayUsingComparator:sortByNumber]; 
    
    を:その後、私は呼び出すことで、私の配列をソート

    NSComparisonResult (^sortByNumber)(id, id) = ^(id obj1, id obj2) 
    { 
        //Convert items to strings 
        NSString *s1 = (NSString *)obj1; 
        NSString *s2 = (NSString *)obj2; 
    
        //Find the period and grab the number 
        NSUInteger periodLoc1 = [s1 rangeOfString:@"."].location; 
        NSString *number1 = [s1 substringWithRange:NSMakeRange(0, periodLoc1)]; 
    
        NSUInteger periodLoc2 = [s2 rangeOfString:@"."].location; 
        NSString *number2 = [s2 substringWithRange:NSMakeRange(0, periodLoc2)]; 
    
        //Compare the numeric values of the numbers 
        return [number1 compare:number2 options:NSNumericSearch]; 
    }; 
    

    :私は数値的にそれらを比較し、各文字列の前のオフ数部分を読み取るために、カスタム・ロジックを使用してNSComparisonResultブロックを作成しました

    関連する問題