2017-09-23 4 views
6

스위프트 3의 코드를 스위프트 4로 변환하고 다음 코드에서이 오류가 발생합니다. 내가 배열을 평평하게 flatmap를 사용하려고하면 난이 무엇입니까스위프트 3에서 스위프트 4로 마이그레이션 - 문자열을 예상되는 String.Element로 변환 할 수 없습니다.

예상 인수 유형 'String.Element'(일명 '문자')

에 'String'형식의 값을 변환 할 수 없습니다
if favoritedProducts.contains("helloWorld") {} 

아래 코드 줄은 [String] 대신 [String.Element] '를 반환합니다. 어떻게 [String]으로 변환합니까? 만약 내가 그것을 [String]으로 캐스팅하려고한다면, 그것은 항상 실패 할 것이라고 말한다.

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

나는 동일한 질문을했습니다. +1 +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

굉장합니다. 이 문제는지도를 사용해야 할 때 flatmap을 사용하고 있다는 것이 었습니다. 신속한 3에서 실수는 괜찮 았지만 신속한 4에서는 문자열이 이제 내가 믿는 문자 배열이므로 작동하지 않습니다. – Nevin

+0

귀하의 답변이 도움이되었습니다. 고마워, +1. – Vats

+0

안녕하세요, 제발 도와주세요. String.Elements 배열을 가지고 문자열에 값을 추출하려고 할 때 ''String.Element] '(일명'Array ')의 값을'String '유형에 할당 할 수 없다는 오류가 표시됩니다. . – hilaj