2010-02-13 22 views
6

Birinin bana NSDictionary'u nasıl sıralayacağını gösterip gösteremeyeceğini merak ediyordum; Son girişten itibaren okumak istiyorum, çünkü anahtar Tarih + Saat ve ben onu bir NSMutableString'a ekleyebilmek istiyorum. Bir numaralayıcı kullanarak okuyabiliyordum ama istediğim sonuçları alamıyorum.Sıralama NSDictionary

Teşekkür

ardından orijinal sözlükten öğeleri başvurmak için diziyi kullanmak sıralamak gereksinimleri için

cevap

13

kolay yolu anahtarlardan yeni bir dizi oluşturmaktır.

(Not: benimComparison, iki anahtarı karşılaştıracak olan kendi yönteminizdir).

NSMutableArray* tempArray = [NSMutableArray arrayWithArray:[myDict allKeys]]; 
[tempArray sortedArrayUsingSelector:@selector(myComparison:)]; 

for (Foo* f in tempArray) 
{ 
    Value* val = [myDict objectForKey:f]; 
} 
0

Ben alfabetik olacak çok kompakt bir hale bir NSDictionary sıralama üzerinde StackOverflow'daki diğer önerilerden bazıları toplanan ettik. Hafızaya yüklediğim ve dökmek istediğim 'yol' alanında bir Plist dosyası var.

NSDictionary *glossary = [NSDictionary dictionaryWithContentsOfFile: path]; 
NSArray   *array1 = [[glossary allKeys] sortedArrayUsingDescriptors:@[ [NSSortDescriptor sortDescriptorWithKey:@"" ascending:YES selector:@selector(localizedStandardCompare:)] ]]; 
for (int i=0; i<array1.count; i++) 
{ 
    NSString* key = [array1 objectAtIndex:i]; 
    NSString* value = [glossary objectForKey:key]; 
    NSLog(@"Key=%@, Value=%@", key, value); 
}