2012-06-04 21 views
6

द्वारा म्यूटेबल सरणी को सॉर्ट करना मैंने NSMutableArray के विभिन्न सॉर्टिंग विधियों का उपयोग करके कुछ उत्तरों को पहले से ही देखा है, लेकिन किसी कारण से वे मेरे लिए काम नहीं कर रहे हैं।शब्दकोश कुंजी

मैं केवल म्यूटेबल सरणी को सॉर्ट करने का प्रयास कर रहा हूं जिसमें प्रत्येक शब्दकोश के भीतर Delay कुंजी द्वारा शब्दकोश शामिल हैं। हालांकि, "क्रमबद्ध" सरणी मूल सरणी के समान सटीक है।

वैसे, यह ठीक काम करता है अगर मैं एक डमी म्यूटेबल सरणी बना देता हूं और इसे संख्याओं वाले शब्दकोशों के साथ पॉप्युलेट करता हूं, लेकिन किसी कारण से यह इस उत्परिवर्तनीय सरणी को सॉर्ट नहीं करेगा जो मैं शुरू कर रहा हूं।

मैं क्या गलत कर रहा हूं?

यहाँ मेरी कोड है:

playlistCalls = [[NSMutableArray alloc] initWithArray:[currentPlaylist objectForKey:@"Tunes"]]; 

NSLog(@"original %@", playlistCalls); 

NSSortDescriptor *delay = [NSSortDescriptor sortDescriptorWithKey:@"Delay" ascending:YES]; 
[playlistCalls sortUsingDescriptors:[NSArray arrayWithObject:delay]]; 

NSLog(@"sorted %@", playlistCalls); 

यहाँ शब्दकोशों युक्त सरणी है:

2012-06-04 15:48:09.129 MyApp[57043:f503] original (
     { 
     Name = Test Tune; 
     Delay = 120; 
     Volume = 100; 
    }, 
     { 
     Name = Testes; 
     Delay = 180; 
     Volume = 100; 
    }, 
     { 
     Name = Testing; 
     Delay = 60; 
     Volume = 100; 
    } 
) 

2012-06-04 15:48:09.129 MyApp[57043:f503] sorted (
     { 
     Name = Test Tune; 
     Delay = 120; 
     Volume = 100; 
    }, 
     { 
     Name = Testes; 
     Delay = 180; 
     Volume = 100; 
    }, 
     { 
     Name = Testing; 
     Delay = 60; 
     Volume = 100; 
    } 
) 

उत्तर

8

के साथ काम किया इसके बाद के संस्करण कोड ठीक है जब मैं अपने शब्दकोश में NSNumber एस का उपयोग करता हूं। इससे मुझे विश्वास होता है कि Delay मान आपके शब्दकोश में तार के रूप में संग्रहीत किया जाता है। आपको क्या करने की आवश्यकता होगी तो स्ट्रिंग्स integerValue द्वारा क्रमबद्ध करें।

NSSortDescriptor *delay = 
    [NSSortDescriptor sortDescriptorWithKey:@"Delay.integerValue" ascending:YES]; 
+0

ठीक है आप ... वह चाल है। मुझे वापस जाने और उसे ठीक करने की जरूरत है। धन्यवाद! – ZeNewb

1

निम्नलिखित का प्रयास करें, यह मेरे

NSDictionary *dic; 
NSMutableArray *arr = [[NSMutableArray alloc] init]; 

dic = [NSDictionary dictionaryWithObjectsAndKeys: 
     [NSNumber numberWithInt:120], @"Delay", 
     [NSNumber numberWithInt:100], @"Volume", 
     nil]; 
[arr addObject:dic]; 

dic = [NSDictionary dictionaryWithObjectsAndKeys: 
     [NSNumber numberWithInt:160], @"Delay", 
     [NSNumber numberWithInt:100], @"Volume", 
     nil]; 
[arr addObject:dic]; 

dic = [NSDictionary dictionaryWithObjectsAndKeys: 
     [NSNumber numberWithInt:100], @"Delay", 
     [NSNumber numberWithInt:100], @"Volume", 
     nil]; 
[arr addObject:dic]; 

NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:@"Delay" ascending:YES]; 
[arr sortUsingDescriptors:[NSArray arrayWithObject:sortDesc]]; 
+0

यह काम करता है जब आप म्यूटेबल सरणी में प्रवेश करते हैं और इस तरह के शब्दकोश जोड़ते हैं, लेकिन यह मेरे मामले के लिए क्यों काम नहीं करता है जब मेरे पास पहले से ही एक पूर्व-पॉप्यूटेड म्यूटेबल सरणी है? यही वह है जो मैं फंस गया हूं: \ – ZeNewb

+0

क्या आप अपना शब्दकोश पॉप्युलेट करने वाले कोड को पोस्ट कर सकते हैं? –

+0

धन्यवाद, लेकिन मैं एक डमी था और उन्हें तारों के रूप में संग्रहित किया। जो इसे पकड़ा और मुझे एक फिक्स दिया। धन्यवाद औश्र सबकुछ वही है! – ZeNewb

संबंधित मुद्दे