작성
·
71
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요 앨런님 저는 현재 활용 76강을 듣고 있는데요!
func getMethod(completion: @escaping ([Music]?) -> Void) {
// URL구조체 만들기
guard let url = URL(string: "https://itunes.apple.com/search?media=music&term=bts") else {
completion(nil)
return
}
// URL요청 생성
var request = URLRequest(url: url)
request.httpMethod = "GET"
// 요청을 가지고 작업세션시작
URLSession.shared.dataTask(with: request) { data, response, error in
// 에러가 없어야 넘어감
guard error == nil else {
print("Error: error calling GET")
print(error!)
completion(nil)
return
}
// 옵셔널 바인딩
guard let safeData = data else {
print("Error: Did not receive data")
completion(nil)
return
}
// HTTP 200번대 정상코드인 경우만 다음 코드로 넘어감
guard let response = response as? HTTPURLResponse, (200 ..< 299) ~= response.statusCode else {
print("Error: HTTP request failed")
completion(nil)
return
}
// 원하는 모델이 있다면, JSONDecoder로 decode코드로 구현 ⭐️
do {
let decoder = JSONDecoder()
let musicData = try decoder.decode(MusicData.self, from: safeData)
completion(musicData.results)
} catch {
}
}.resume() // 시작
}
해당 코드에서
위와같은 에러가 발생하여 @Sendable을 붙이니 해결이 되었습니다.
강의에서는 에러가 안나는 이유는 버전 차이 때문에 그런거라고 이해하면 될까요?
답변 1
0
네네 미래님,
@Sendable관련 내용은 Swift 6 관련 내용입니다. (언어 선택을 Swift 5로 선택하셔야 에러가 나지 않습니다. Swift 6는.. 제 별도 강의에 있는 Swift Concurrency관련 내용을 익히셔야 이해되는 내용이고, 지금 학습하시는 단계에서 절대 필요한 내용이 아니니.. Swift 5로 선택하셔서 구현하시면 됩니다.)
플레이그라운드에서 연습중이시면.. 오른쪽을 펼치셔서,
Swift 6로 되어있는 것을 Swift 5로 바꾸시면 됩니다.
감사합니다 :)