2017-05-01 34 views
0

私の最初のプロジェクト(オンラインコース)のために辞書の配列を並べ替える必要があります。並べ替えはカバーされていませんでした。私は自分でいくつかの研究をする必要がありました。アップルに行って閉鎖について読んで、ソートの概念を理解するためにYouTubeを見ましたが、私はそれについてロジックを設定する方法について少し混乱しています。(func私は仮定しています)Swift:辞書の配列でキーの値のペアをソート

これは私がこれまで持っているコレクションです

var players: [[String: Any]] = [ 

     ["Name": "Joe Smith", 
     "Height": 42, 
     "Experience": true, 
     "Guardians": "Jime and Jan Smith", 
     "Team": ""], 

     ["Name": "Jill Tanner", 
     "Height": 36, 
     "Experience": true, 
     "Guardians": "Clara Tanner", 
     "Team": ""], 

     ["Name": "Bill Bon", 
     "Height": 43, 
     "Experience": true, 
     "Guardians": "Sara and Jenny Bon", 
     "Team": ""], 
] 

何かヒントや情報がありがとうございます。

+1

まあ、何を並べ替えたいですか? – Alexander

+0

これがクラスの場合は、組み込みソート関数を使用できますか、独自の関数を記述する必要がありますか? – creeperspeak

+1

投稿する前に[トピックに関する基本的な検索](http://stackoverflow.com/search?q=%5Bswift%5D+sort+array+of+dictionary)を行ってください。これは以前何度も尋ねられ、答えられています。 – rmaddy

答えて

0

辞書の配列ではなく、構造体(またはおそらくオブジェクト)の配列にデータを変換することを強くお勧めします。辞書を使用するために必要な微妙な型付け(値の型としてAnyを持つ)は、辞書を実際に扱うのが面倒です。さらに、辞書を使って作業するときのパフォーマンスと安全性に大きな影響を与えます。

struct Player { 
    let name: String 
    let height: Int 
    let experience: Bool 
    let guardians: String 
    let team: String? 
} 

let players = [ 
    Player(
     name: "Joe Smith", 
     height: 42, 
     experience: true, 
     guardians: "Jime and Jan Smith", 
     team: nil 
    ), 
    Player(
     name: "Jill Tanner", 
     height: 36, 
     experience: true, 
     guardians: "Clara Tanner", 
     team: nil 
    ), 
    Player(
     name: "Bill Bon", 
     height: 43, 
     experience: true, 
     guardians: "Sara and Jenny Bon", 
     team: nil 
    ), 
] 

// Example, sort by height 

let sortedPlayers = players.sorted{ $0.height < $1.height } 

for player in sortedPlayers { 
    print(player) 
} 

私はArraysorted方法に任意の与えられた二つの要素間の比較を行うためにどのようにそれを伝えるクロージャを提供してきました。この例では、背の高い選手の前に短い選手を置くクロージャーを書いた。

+0

Alexanderに感謝します!現時点では、私は構造体に精通していないし、私の理解から、オンラインコースは、クラス(コレクション、コントロールフロー、関数)でカバーされている可能な限り多くの資料を活用することを示唆しています。それができるもののより良い理解。 – Disavio

関連する問題