2016-08-02 10 views
9

मैं स्ट्रिंग सरणी को वर्णानुक्रम में सॉर्ट करने का प्रयास कर रहा हूं। मानक सॉर्ट फ़ंक्शन के साथ यह तब काम करता है जब स्ट्रिंग में Å, Ä या Ö (स्वीडिश) नहीं होता है।Å, Ä और Ö युक्त स्विफ्ट स्ट्रिंग सरणी - स्विफ्ट

मैं इसे ए ... जेड, Å, Ä, Ö जैसे आदेश देना चाहता हूं। इसके बजाय उत्पादित आदेश ए है ... जेड, आ, ओ, ओ।

मैंने स्थानीयकृत कॉम्पैयर का उपयोग करने की कोशिश की, लेकिन इसे काम पर नहीं मिला। इस मामले में Å और '' ए 'और ओ से' ओ 'में अनुवाद किया गया था।

let songs = self.allSongs.sort { return $0.title.localizedCompare($1.title) == .OrderedAscending } 

यह कैसे करें इस पर कोई विचार है?

उत्तर

15

मैं की तरह एक ... जेड यह ऑर्डर करने के लिए चाहते हैं,, Ä हे

आदेश के रूप में स्वीडिश स्थान में परिभाषित किया गया है यही कारण है, तो आप करने के लिए है यह स्पष्ट रूप से सेट करता है, तो वर्तमान स्थान स्वीडिश नहीं है:

let titles = [ "Z", "Ö", "Å", "Ä", "A" ] 

let swedish = NSLocale(localeIdentifier: "sv") 
let sortedTitles = titles.sort { 
    $0.compare($1, locale: swedish) == .OrderedAscending 
} 

print(sortedTitles) // ["A", "Z", "Å", "Ä", "Ö"] 

एक केस-संवेदी छंटाई के लिए, options: .CaseInsensitiveSearch तर्क जोड़ें। स्विफ्ट 3 के लिए

upate:

let titles = [ "Z", "Ö", "Å", "Ä", "A" ] 

let swedish = Locale(identifier: "sv") 
let sortedTitles = titles.sorted { 
    $0.compare($1, locale: swedish) == .orderedAscending 
} 

print(sortedTitles) // ["A", "Z", "Å", "Ä", "Ö"] 
+0

धन्यवाद, एक आकर्षण की तरह काम किया। – atlas

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