2017-06-24 4 views
-1

このフラットマップ関数を使用して辞書を返していますが、代わりに[(key: String, value: String)]を返しています。 [(key: String, value: String)]と辞書とは何が違いますか?ここに私が使用しているコードがあります。これを行う最善の方法は何でしょうか。 totalResponseArrayは、タイプArray<Duplet<Product, imageArray>>のカスタムクラスです。[(key:String、value:String)]と[String:String]辞書の相違点

let sizeDict = totalResponseArray.flatMap { (obj) -> [String:String] in 
     var storedItem = [String:String]() 
     storedItem["\(obj.one.productID)"] = "\(obj.one.size)" 
     return storedItem 
    } 

私はこれを行うと思いますが、ループを使用しているとは思いますが、もっとクリーンな方法があるようです。

フラットマップ関数を辞書ではなく配列に適用しようとしています。フラットマップ関数の結果は[String:String]の辞書である必要があります。

これは私が得ようとしている結果です。それを行うより良い、またはよりクリーンな方法がありますか?私は、上記のコードが以下のコードと同じ結果を得るのに意味がないことを理解しました。

var storedItem = [String:String]() 

    for eachItem in totalResponseArray{ 
     storedItem["\(eachItem.one.productID)"] = "\(eachItem.one.color)" 
    } 

EDIT: それはループが最善の方法とそれを行うための唯一の方法であることが判明しました。私は関数をマップしようとしていません。

+0

私は重複しているとは思わない。フラットマップ関数を辞書ではなく配列に適用しようとしています。フラットマップ関数の結果は辞書でなければなりません。 –

+0

申し訳ありませんが、私のせいです。 - しかし、[Swiftの辞書にmap()を適用する最もクリーンな方法は何ですか?](https://stackoverflow.com/questions/24116271/whats-the-cleanest-way-of-applying-map-to-a -dictionary-in-swift)は、辞書とキー/値のペアの配列/シーケンスの違いを説明しているので、参考にしてください。私は、同様の方法をここで適用できると強く想定している。 –

+0

誤解を避けるために、サンプル入力と期待した結果を提供するかもしれません。 – shallowThought

答えて

3

[(key: String, value: String)]は、ではなく、(key: String, value: String)のタプルのArrayです。

関連する問題