2016-07-02 7 views
-5

1つの配列をソートしてもう一方の配列に代入しようとしています。両方の配列は同じようにそうように定義されています。Swiftの変数にソートされた配列を代入できません

["c" : [1,2,3], "a" : [2,3,3], "b" : [4,4,4]] 

のように並べ替え:

Cannot assign value of type [(String, [Int])] to type [String : [Int]]

私は何を達成しようとしているが、この辞書を作ることです:私はこのエラーをのgettinています

var arrayA: [String: [Int]] = [:] 
var sortedArrayA:[String: [Int]] = [:] 

sortedArrayA = arrayA.sort{ $0.0 < $1.0 } // error on this line. 

これは:

["a" : [2,3,3], "b" : [4,4,4], "c" : [1,2,3]] 

それが起こるならば。

+3

'arrayA'と' sortedArrayA'のどちらも配列ではありません。それらは辞書であり、辞書は定義によって順序付けられていない。 – vadian

+1

また、ソート方法を呼び出す試みもありません。 – Sulthan

+0

私は少し混乱しています。辞書を並べ替えることはできないのですか? – HelloimDarius

答えて

0

ご質問では、配列を使用していますが、実際には辞書を使用しています。そしてあなたの構文は間違っています。次のような空の辞書を宣言することができます:var dictionary: [String:Int] =()。しかし実際の質問に答えるには、次のようにすることができます:

let arrayA = ["c" : [1,2,3], "a" : [2,3,3], "b" : [4,4,4]] 

let sortedDict = arrayA.sort { $0.0 < $1.0 } 
print("\(sortedDict)") 
+0

さて、私はletとしようとすべてが大丈夫だ。しかし、私はプロパティ(それはクラスのスコープ内で使用することができる変数)に割り当てしようとすると、それは私にエラーが発生します。 – HelloimDarius

+0

letを使用する必要はありません。どのようなエラーが出ますか? –

+0

これはディクショナリを出力しないため、キーと値の組のタプルの配列を出力するため、エラーが発生します。辞書を出力することは、既に定義されていないので、他の人が既に言ったように、ここでは意味をなさないでしょう。 – Hamish

0

アレイの並べ替えをPlaygroundで試してみてください。すぐに.sort()を使用して配列を並べ替えることができます。例えば、整数の配列のために:

var array = [Int]() //initial empty array 
array = [2, 1, 4, 3] 
array = array.sort() // array is now sorted 
1

ええ、私はスウィフトで閉鎖は涼しいです知っている。しかし、あなたはこのコードから配列をソートすると推測するのに十分ではありません:

var arrayA: [Int] = [] 
var sortedArrayA:[Int] = [] 

sortedArrayA = arrayA{ $0 < $1 } 

コードがさらに悪いです!あなたは配列を宣言していませんでした!あなたが宣言したものは、と書かれていない辞書です。

とにかく、配列の構文を学ぶだけで、必要な配列の型を囲む一対の角かっこです。したがって、Intの配列は[Int]になり、Stringの配列は[String]になります。

これは取得できましたか?クール。

「しかし、私は辞書しか持っていませんが......」あなたは悲しそうに言った。辞書がある場合は、keysまたはvaluesのいずれかを並べ替えることができます。おそらく値を並べ替える必要があると思います。

let values = someDictionary.values // if you want to sort keys, use .keys instead 

今、あなたは、ソートするために、実際にコールsort方法にする必要があります。閉鎖を書くだけででなく、になります。

let sortedValues = values.sort(<) 

これはもちろん、どのアレイでも実行できます。

let array = [3, 2, 1] 
let sortedArray = array.sort(<) 
関連する問題