2010-02-13 16 views
6

मैं सोच रहा था कि कोई मुझे दिखा सकता है कि NSDictionary को कैसे क्रमबद्ध करें; मैं इसे अंतिम प्रविष्टि से शुरू करना चाहता हूं, क्योंकि कुंजी दिनांक + समय है और मैं इसे NSMutableString में जोड़ना चाहता हूं। मैं इसे एक गणक का उपयोग करके पढ़ने में सक्षम था लेकिन मुझे नतीजे नहीं मिलते हैं।सॉर्टिंग NSDictionary

धन्यवाद

उत्तर

13

अपनी आवश्यकताओं के लिए सबसे आसान तरीका है कुंजी से एक नई सरणी बनाने के लिए है, तरह है कि, तो सरणी का उपयोग मूल शब्दकोश से आइटम को संदर्भित करने के।

(नोट MyComparison आपकी अपनी विधि है जो दो कुंजी की तुलना करेगी)।

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

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

मैं बहुत कॉम्पैक्ट उस तरह वर्णानुक्रम होगा कुछ में एक NSDictionary छँटाई पर StackOverflow पर अन्य सुझावों में से कुछ के लिए एकत्रित किया गया है। मेरे पास 'पथ' में एक प्लिस्ट फ़ाइल है जिसे मैं स्मृति में लोड करता हूं और डंप करना चाहता हूं।

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); 
}