स्विफ्ट Array
से बचने के लिए कोई ज़रूरत नहीं है।
यह NSArray
के साथ दोनों दिशाओं में ब्रिज किया गया है, इसलिए अधिक प्रकार के सुरक्षित कोड के लिए केवल स्विफ्ट सरणी और पुल के साथ अपना काम करना सबसे अच्छा है जब ओबीजेसी एपीआई के साथ इंटरऑपरेक्ट करने के लिए आवश्यक हो। (और सबसे आयातित APIs में, स्विफ्ट स्वचालित रूप से [AnyObject]
को NSArray
बदल देता है, तो आप भी बहुत बार पाटने की जरूरत नहीं है।)
persons
सरणी मान लिया जाये कि एक [AnyObject]
आप अन्य एपीआई से मिल गया है, तो आप में कटौती कर सकते हैं पहली सरणी कास्टिंग द्वारा की अन्य उत्तर के प्रकार कास्टिंग रिश्तेदार राशि:
let sortedPersons = sorted(persons as [Person]) { $0.name < $1.name }
// sortedPersons has inferred type [Person]
इसके अतिरिक्त, क्योंकि आप केवल अपने Person
वर्ग के एक विशिष्ट संपत्ति पर सॉर्ट करने के लिए एक तुलनित्र ब्लॉक का उपयोग कर रहे हैं, तो आप तरह उपयोग करने के लिए बेहतर कर सकता है वर्णनकर्ता:
let sortedPersons = (persons as NSArray).sortedArrayUsingDescriptors([
NSSortDescriptor(key: "name", ascending: true)
])
(persons as NSArray
हिस्सा आवश्यक नहीं हो सकता है, तो persons
एक ObjC एपीआई से आया है।)
कैसे Person
वर्ग कार्यान्वित किया जाता है के आधार पर, वर्णनकर्ता साथ छँटाई बैकएंड पर एक अधिक कुशल प्रकार का उत्पादन कर सकते हैं। उदाहरण के लिए, यदि यह कोर डेटा प्रबंधित ऑब्जेक्ट है, तो डिस्क्रिप्टर के साथ सॉर्टिंग एक SQL क्वेरी उत्पन्न कर सकती है जो डेटाबेस में तेज़ी से निष्पादित करती है और थोड़ी मेमोरी का उपयोग करती है, जबकि तुलनित्र बंद करने के साथ क्रमबद्ध करने के लिए डेटाबेस से प्रत्येक ऑब्जेक्ट को तुरंत प्रत्येक के विरुद्ध बंद करने का मूल्यांकन करने की आवश्यकता होती है ।
'NSComparisonResult' अब है' ComparisonResult'। – ThomasW