2011-07-22 11 views
2

NSStringをNSDateから変換した配列を持っています。配列の最初のインデックスを取得して並べ替えています。 日付は08AM、01PMの形式です。私がNSSortDescriptorをやろうとすると、いつも私には01PMと08AM以上が与えられます。iphoneのNSDateのNSStringをソート

//** Date string **// 
NSDate *date1 = [dateFormat dateFromString:startSection]; 
[dateFormat setDateFormat:@"ah"]; 
startSection = [dateFormat stringFromDate:date1]; 
NSString *strSection = [NSString stringWithFormat:@"%@", startSection]; 

上記の文字列がNSArrayに追加されました。以下でNSArrayを使用して文字列をソートします。最後に、同じ配列を使用して最初の文字を取得し、sectionforsectionIndexTitleにインデックスを表示します。だから、私はAM8とPM1を8AMと1PMではなくセクションとして持っています。

NSSortDescriptor *nameDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"start" 
                    ascending:FALSE 
                    selector:@selector(localizedCaseInsensitiveCompare:)] autorelease] ; 


NSArray *descriptors = [NSArray arrayWithObject:nameDescriptor]; 
[[dict objectForKey:aKey] sortUsingDescriptors:descriptors]; 
+3

なぜあなただ​​けの日付を並べ替えることはできませんか? –

+0

@Georg:正しいsectionForSectionIndexTitleを持つように日付をソートしようとしています。データが正しいセクションの下にあるようにします。 – lifemoveson

答えて

2

sortUsingComparator:はどうですか?しかしこれは比較の前に文字列を08AMからAM0801PMからPM01に変更することを含んでいるので、これはその形式になると仮定している。

NSMutableArray * theArray = [dict objectForKey:aKey]; /* To be sorted */ 
[theArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    NSString * string1 = [NSString stringWithFormat:@"%@%@", [(NSString *)obj1 substringFromIndex:2], [(NSString *)obj1 substringToIndex:2]; 
    NSString * string2 = [NSString stringWithFormat:@"%@%@", [(NSString *)obj2 substringFromIndex:2], [(NSString *)obj2 substringToIndex:2]; 

    return [string1 localizedCaseInsensitiveCompare:string2]; 
}]; 

/* theArray is now sorted */ 
+0

同じアレイを使用してセクションフォースセクションの文字列として表示し、nsdateのソートを比較します。どのように私はそれらの両方のための異なる配列を持つことによってそれを避けることができますか? – lifemoveson

+0

@lifemoveson同じ配列が何を意味しているのかは不明です。明らかに 'NSDate'はあなたの配列のセクションタイトルを含むものとは異なります。私はあなたがこの配列のキーを含む辞書、つまりそれぞれが 'NSDate'を含む配列にマップするセクションタイトルを持つと仮定します。あなたはこのアプローチとどのように違うかについて少し説明できますか? –

+0

私は上記の質問を編集しました。これについてもう少し詳しく説明します。 – lifemoveson

関連する問題