2017-09-23 20 views
6

我将我的代码从swift 3转换为swift 4,并在以下代码中获取此错误。我甚至得到这个当我尝试使用flatmap扁平化数组从swift 3迁移到swift 4 - 无法将字符串转换为期望的String.Element

无法将类型的值“串”预期参数类型 “String.Element”(又名“字符”)

if favoritedProducts.contains("helloWorld") {} 

下面的代码行不返回[String],而是'[String.Element]'我如何将它转换为[String]。如果我试图将其转换为[String],则表示它总是失败。

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

我也有同样的问题,+1为你 – Vats

回答

3

如果你有一个Item类型与非可选productIDString类型的这样

struct Item { 
    let productID: String 
} 

财产,你有Item

let allItems: [Item] = ... 

数组然后你可以使用map获得一排productID(s)方法

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

现在productIDs[String]

+2

太棒了。问题是当我只需要使用map时,我正在使用flatmap。在swift 3中,这个错误是可以的,但在快速4中,它不起作用,因为字符串现在是我相信的字符数组。 – Nevin

+0

你的回答帮了我。谢谢,+1给你。 – Vats

+0

嗨,请帮助我。我有一个String.Elements数组,当我想要将值提取到一个字符串中时,显示错误''不能指定'String'类型的值[String.Element]'(又名'Array ') 。 – hilaj

相关问题