2017-09-23 35 views
6

Kodumu 3'ten hızlı 4'e dönüştürüyorum ve bu hatayı aşağıdaki kodda alıyorum. Ben bir diziye düzleştirmek flatmap kullanmaya çalıştığınızda Hatta bu alıyorumGeçiş 3'ten hızlı 4'e geçiş - Dizgeyi beklenen String'e dönüştüremiyor.

beklenen argüman türü 'String.Element' (aka 'Karakter')

için türünün değerini 'Dize' dönüştürülemez
if favoritedProducts.contains("helloWorld") {} 

Aşağıdaki kod satırı bir [String] döndürmüyor, bunun yerine bir [[String.Element] 'Bunu bir [String] biçimine nasıl dönüştürebilirim? Bir [String] olarak yayınlamaya çalışırsam, her zaman başarısız olacağını söylüyor.

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

Ben de aynı soru vardı, senin için +1 – Vats

cevap

3

bu

struct Item { 
    let productID: String 
} 

gibi tip String bir olmayan seçmeliproductID özelliğiyle bir Item türü var Ve Sonra Item

let allItems: [Item] = ... 

bir dizi varsa yapabilirsiniz map kullanarak productID(s) bir dizi olsun Yöntemin

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

Şimdi productIDs[String] olduğunu.

+2

Awesome. Mesele sadece haritayı kullanmam gerektiğinde flatmap kullanıyordum. Hızlı 3'te hata oldu ama hızlı 4'te işe yaramadı çünkü dizeler artık inandığım karakter dizileri. – Nevin

+0

cevabınız bana yardımcı oldu. teşekkürler, senin için +1. – Vats

+0

Merhaba, lütfen bana yardım edin. Ben String.Elements bir dizi var ve ben bir dize değerleri ayıklamak için goint gov, 'Dize' yazmak için '' String 'öğesi' '(aka' Array 'yazın)' değeri atanamaz 'hata gösterir . – hilaj