2017-09-23 11 views
6

私のコードをswift 3からswift 4に変換し、次のコードでこのエラーが発生しました。私は、アレイswift 3からswift 4への移行 - 文字列を期待されるString.Elementに変換できません。

が期待される引数の型 に型「文字列」の値を変換できません平らにするflatmapを使用しようとする場合でも、私はこれを取得しています「String.Element」(別名「文字」)

if favoritedProducts.contains("helloWorld") {} 

以下のコード行は[String]を返さず、 '[String.Element]'です。どのように[String]に変換しますか?私が[String]としてそれをキャストしようとすると、それは常に失敗すると言います。

let productIDs = allItems.flatMap{$0.productID} 
+0

私は同じ質問をしていましたが、+1あなたのため – Vats

答えて

3

あなたはこの

struct Item { 
    let productID: String 
} 

のようなタイプString非オプションproductIDプロパティを持つItemタイプがあり、その後Item

let allItems: [Item] = ... 

の配列を持っている場合することができますmapを使用してproductID(s)の配列を取得します。方法

let productIDs = allItems.map { $0.productID } 

は今productIDs[String]です。

+2

素晴らしいです。問題は、マップを使用する必要があるときにフラットマップを使用していたことでした。速い3では、間違いは大丈夫でしたが、速い4では、文字列が今や私が信じている文字列なので、動作しませんでした。 – Nevin

+0

あなたの答えが私を助けました。ありがとう、+1。 – Vats

+0

こんにちは、助けてください。私はString.Elementsの配列を持っていて、値を文字列に抽出するのに手間がかかっているとき、 '' String [Element] '(別名' Array ')の型を' String ' 。 – hilaj

関連する問題