2011-11-30 13 views
6

Hihi सब,iPhone - NSMutableArray 2 कुंजी के साथ NSDictionary युक्त

की छंटाई मैं एक NSMutableArray विभिन्न NSDictionary युक्त है। प्रत्येक NSDictionary में, मेरे पास दो कुंजी-मूल्य-जोड़े हैं, उदाहरण: उपयोगकर्ता नाम और लॉगिनडेट।

मुझे लॉगिन एनएटी अवरोही और उपयोगकर्ता नाम आरोही के आधार पर इस एनएसएमयूटेबलएरे में सभी एनएस डिक्शनरी को सॉर्ट करना होगा।

बस अधिक जानकारी के में वर्णन करने के लिए:

NSMutableArray (index 0): NSDictionary -> username:"user1", loginDate:20 Dec 2011 
NSMutableArray (index 1): NSDictionary -> username:"user2", loginDate:15 Dec 2011 
NSMutableArray (index 2): NSDictionary -> username:"user3", loginDate:28 Dec 2011 
NSMutableArray (index 3): NSDictionary -> username:"user4", loginDate:28 Dec 2011 

छंटाई के बाद, सरणी में परिणाम होना चाहिए:

NSMutableArray (index 0): NSDictionary -> username:"user3", loginDate:28 Dec 2011 
NSMutableArray (index 1): NSDictionary -> username:"user4", loginDate:28 Dec 2011 
NSMutableArray (index 2): NSDictionary -> username:"user1", loginDate:20 Dec 2011 
NSMutableArray (index 3): NSDictionary -> username:"user2", loginDate:15 Dec 2011 

मैं यह कैसे प्राप्त कर सकते हैं? कुछ sortUsingComparator विधि के माध्यम से चला गया है, इसके लिए एक रास्ता नहीं पता कर सकते हैं।

+0

क्या लॉगिन एक स्ट्रिंग है या क्या यह एनएसडीएटी है? –

+0

यह एक एनएसडीएटी है। –

उत्तर

6

शायद ऐसा कुछ?

[array sortUsingDescriptors: 
[NSArray arrayWithObjects: 
    [[[NSSortDescriptor alloc] 
    initWithKey:@"loginDate" 
    ascending:NO] 
    autorelease], 
    [[[NSSortDescriptor alloc] 
    initWithKey:@"username" 
    ascending:YES] 
    autorelease], 
    nil]]; 

आप आईओएस 4 के लिए निर्माण या उच्चतर आप भी कर सकते हैं:

[array sortUsingDescriptors: 
[NSArray arrayWithObjects: 
    [NSSortDescriptor sortDescriptorWithKey:@"loginDate" ascending:NO], 
    [NSSortDescriptor sortDescriptorWithKey:@"username" ascending:YES], 
    nil]]; 

यह गुण कुंजी मानों की तुलना करने compare: विधि का उपयोग कर काम करता है, कि valueForKey: द्वारा दिए गए मान है। NSDictionary के मामले में यह मूल्य प्राप्त करने के लिए objectForKey: पर कॉल करें। अधिक जानकारी के लिए "@" के साथ उपसर्ग कुंजी नाम जैसे कुछ विशेष नोटेशन हैं, Difference valueforKey objectForKey देखें।

+0

सलाह के लिए धन्यवाद, निश्चित रूप से इसे फिर से प्रयास करें और फिर प्रतिक्रिया दें .. :) –

+0

यह प्रत्येक कुंजी के लिए 'तुलना:' चयनकर्ता का उपयोग करके सॉर्ट करेगा। यदि आप चाहें तो आप एक और चयनकर्ता भी निर्दिष्ट कर सकते हैं या प्रत्येक प्रकार के वर्णनकर्ता के लिए एक कस्टम तुलनित्र का उपयोग कर सकते हैं। –

+0

बहुत बहुत धन्यवाद! यह काम करता हैं! :) –

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