एक

2011-12-31 8 views
5

पर आधारित दो एनएसएमयूटेबलएरेज़ ऑर्डर करें मेरे पास दो एनएसएमयूटेबल एर्रे हैं। पहले की सामग्री, संख्यानुसार है जो एक दूसरे की सामग्री के लिए रखा जाता है:एक

First Array Second Array 
    45    Test45 
    3    Test3 
    1    Test1 
    10    Test10 
    20    Test20 

कि दोनों सरणियों का रूप है। अब मैं उन्हें इतनी संख्यात्मक रूप से कैसे ऑर्डर कर सकता हूं ताकि वे समाप्त हो जाएं:

First Array Second Array 
    1    Test1 
    3    Test3 
    10    Test10 
    20    Test20 
    45    Test45 

धन्यवाद!

+2

इसे "इंडेक्स सॉर्ट" के रूप में जाना जाता है। अजीब तरह से, वहाँ ऑब्जेक्टिव-सी में या सबसे अन्य वातावरण में ऐसा करने के लिए कोई पुस्तकालय दिनचर्या है, भले ही आवश्यकता यहां दिखाई देंगी काफी अक्सर। तो सबसे सरल दृष्टिकोण किसी अन्य वस्तु (प्रथम सरणी तत्व/दूसरी सरणी तत्व) में अपनी प्रविष्टियां रख दिया और उन वस्तुओं को सॉर्ट, तो अपने सरणियों को फिर से संगठित करने के लिए है। अन्यथा आपको अपना खुद का सॉर्ट दिनचर्या लिखना होगा। –

+0

मैं माफी चाहता हूँ, लेकिन मैं यह समझ नहीं :(यह पहली बार मैं सरणी तो छँटाई के साथ सौदा मुझे पता नहीं :( – pmerino

उत्तर

17

मैं दो सरणी को चाबियों और मानों के रूप में एक शब्दकोश में डाल दूंगा। फिर आप पहली सरणी (शब्दकोश में कुंजी के रूप में कार्य करने) को क्रमबद्ध कर सकते हैं और उसी क्रम में शब्दकोश के मानों को तुरंत एक्सेस कर सकते हैं। ध्यान दें कि यह केवल तभी काम करेगा जब पहली सरणी में ऑब्जेक्ट NSCopying का समर्थन करते हैं क्योंकि यह NSDictionary काम करता है।

निम्नलिखित कोड इसे करना चाहिए। यह वास्तव में काफी कम है, क्योंकि NSDictionary कुछ अच्छा सुविधा तरीके प्रदान करता है।

// Put the two arrays into a dictionary as keys and values 
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:secondArray forKeys:firstArray]; 
// Sort the first array 
NSArray *sortedFirstArray = [[dictionary allKeys] sortedArrayUsingSelector:@selector(compare:)]; 
// Sort the second array based on the sorted first array 
NSArray *sortedSecondArray = [dictionary objectsForKeys:sortedFirstArray notFoundMarker:[NSNull null]]; 
+3

बहुत अच्छा कोड है है, लेकिन मामले को संभाल नहीं करता है जब कुंजी नहीं हैं अद्वितीय। –

8

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

आम तौर पर, कोको और कोको टच में, समानांतर सरणी काम करते हैं जबकि मॉडल ऑब्जेक्ट्स काम को बचाते हैं। जहां भी आप कर सकते हैं पूर्व में बाद वाले को पसंद करें।