2017-09-23 70 views
6

Konwertuję mój kod z Swift 3 na szybki 4 i otrzymuję ten błąd w poniższym kodzie. Dostaję to nawet wtedy, gdy próbuję użyć flatmap spłaszczyć tablicyMigracja z Swift 3 na Swift 4 - Nie można przekonwertować ciągu do oczekiwanego String.Element

Nie można przekonwertować wartości typu „string” do oczekiwanego typu argumentu „String.Element” (aka „Charakter”)

if favoritedProducts.contains("helloWorld") {} 

Poniższy wiersz kodu nie zwraca [String] zamiast tego jest "[String.Element]" Jak przekonwertować go na [String]. Jeśli spróbuję rzucić to jako [Ciąg], mówi, że zawsze zawiedzie.

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

Miałem to samo pytanie, +1 dla ciebie – Vats

Odpowiedz

3

Jeśli masz Item typ z non opcjonalnymproductID własności typu String jak ten

struct Item { 
    let productID: String 
} 

I masz tablicę Item

let allItems: [Item] = ... 

Następnie można uzyskaj tablicę productID(s) przy użyciu map METHOD

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

Teraz productIDs jest [String].

+2

Awesome. Problem polegał na tym, że używałem płaskiego planu, kiedy potrzebowałem tylko użyć mapy. W szybkim 3 błąd był w porządku, ale w szybkim 4 nie działa, ponieważ ciągi są teraz tablicami postaci, w które wierzę. – Nevin

+0

Twoja odpowiedź mi pomogła. dzięki, +1 dla ciebie. – Vats

+0

Witam, pomóżcie mi. Mam tablicę String.Elements i kiedy jestem goint, aby wyodrębnić wartości do łańcucha, pokazuje błąd, "Nie można przydzielić wartości typu" [String.Element] "(aka" Array "), aby wpisać" String " . – hilaj