モデルからデータを取得しています。つまり、Contacts
です。それから私はこのモデルをname
プロパティごとにソートします。しかし、結果はソートされた方法ではありません。私は、データをソートするには、次のコードを使用しています:私が間違っているのは何Swift3でソートする
result......["A": [], "B": [<App.Contact: 0x7c6703e0>], "C": [], "D": []]
:
result......["M": [], "K": [<App.Contact: 0x7c6703e0>], "E": [], "U": [], "Y": [], "H": [<App.Contact: 0x7c6701a0>], "X": [], "A": [<App.Contact: 0x7c670120>, <App.Contact: 0x7c670440>], "D": [<App.Contact: 0x7c6700b0>, <App.Contact: 0x7c670160>], "I": [], "R": [], "G": [], "P": [], "O": [], "L": [], "W": [], "C": [], "V": [], "J": [<App.Contact: 0x7c66f990>], "Q": [], "T": [], "B": [], "N": [], "Z": [], "S": [], "F": []]
は、私のようなソートされた形で出力したい:
func filterArrayAlphabatically(contacts : [Contact])
{
let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters.map({ String($0)})
let all_Contacts = contacts.sorted { $0.name < $1.name } //Sort model data as per name
var result = [String:[Contact]]()
for letter in alphabet
{
result[letter] = []
for cntct in all_Contacts
{
let ctc : Contact! = cntct
let name : String! = ctc.name.capitalized
if name.hasPrefix(letter)
{
result[letter]?.append(cntct)
}
}
}
print("result......\(result)")
}
それは私のような出力を提供しますか?またはそれをソートする他の人がいますか?ありがとう!
EDIT:私は正しい順序を作るために、次のコードを試してみました:
let sortedArray = result.sorted
{
(struc1, struc2) -> Bool in
return struc1.key < struc2.key
}
[OK]を、これは私が好きな私は、正しい順序で結果ができます。しかし、問題は、私はそれを使用したいですが、どのように私は知らない。私はvar arr_Contacts = [String:[Contact]]()
を持っています。私はsortedArray
にarr_Contacts
を割り当てたいと思います。どうやってやるの?
私はそれがある警告を与える割り当てる:
結果を最初の文字をキーにして辞書に入れます。辞書は順序付けられていません。 – Paulw11
[NSOrderedDictionary](https://cocoapods.org/pods/NSOrderedDictionary) – Fonix
を使用して調べることができますはい、どうすれば正しい順序で作成できますか? – Amanpreet