Closure 실전 세번째 설명 질문입니다.
412
작성한 질문수 1
강의을 수강하면서 아래의 함수를 사용하려고 하는데 if name.contains 구문에서
아래와 같은 오류가 발생됩니다.

let names = ["apple", "air", "brown", "red", "orange", "blue", "candy"]
func someFind(find: String) -> [String] {
var newNames = [String]()
for name in names {
if name.contains(find) {
newNames.append(name)
}
}
return newNames
}
Cannot convert value of type 'String' to expected argument type 'String.Element' (aka 'Character')
강의에서는 잘 되는데, 제가 선언해서 저 함수를 쓰려고할때 발생되는 에러 메세지인데..
String에서는 Charater Type밖에 찾을 수 없다고 합니다. 왜 강사님 코드는 되고 저는 안되는것인가요..?
문자열 배열에서 검색한번 해보려고 하는데 오류가 발생되는데... 왜 이런 오류가 발생되는것인가요. ㅠㅠ
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
강의에서 사용하는 Swift 버전과 작성하신 코드에서 사용하는 버전이 다를 경우에 발생할 수 있는 문제입니다. 오류 메시지를 보면, 인자로 전달하는 String 타입 변수의 요소(Character)가 아닌, 전체 문자열(String)이 전달된다는 것을 의미합니다.
따라서, contains() 메서드를 사용할 때는 문자열의 각 요소를 비교해야 합니다. 아래와 같이 코드를 수정하면 원하는 결과를 얻을 수 있을 것입니다.
func someFind(find: String) -> [String] {
var newNames = [String]()
for name in names {
if name.contains(find) {
newNames.append(name)
}
}
return newNames
}
let names = ["apple", "air", "brown", "red", "orange", "blue", "candy"]
print(someFind(find: "a")) // ["apple", "air", "orange", "candy"]
이와 같이 변경하시면 제대로 된 결과가 출력될 것입니다. 참고하시기 바랍니다. 감사합니다.
진로에 대한 질문...!
0
46
1
Static 선언 시 에러 발생
0
48
1
클로저의 형태로 만들다
0
58
1
Function Types Error
0
48
1
안드로이드 기기 실행 오류
0
71
2
수강연장 가능할까요...
0
66
2
강의에서 사용된 안드로이드 스튜디오 버전을 알고싶어요.
0
68
2
SwiftData 미리보기 미적용
0
61
2
중괄호와 함수
0
63
2
기본 뷰 디자인이 강사님과 다릅니다.
0
63
2
이미지 2x, 3x 질문
0
50
2
강의를 다 듣고난 후
0
80
2
android crud중 c 영상이 12초만 있는 잘린 영상이에요.
0
78
2
수강 기간 연장 문의
0
73
1
수강연장부탁드려도될까요..
0
92
2
Combine Playground 에서 실행 시
0
106
2
70강 - 글로벌 액터로 격리된 Protocol 을 extension 에서 conform 시 타입 본체의 격리 수준 질문
0
85
1
searchable이 화면 하단에 위치해요
0
105
2
Drawing Cycle 관련 질문
0
103
1
앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?
0
143
2
델리게이트 패턴 관련 질문
0
110
2
ios 애드몹 광고
0
254
2
수강 기간 연장 부탁드릴 수 있을까요?
0
110
1
활용 앱 57강 질문입니다.
0
81
1





