URLSession.shared.dataTask(with: url){ data, res, err in
if let data = data{
}
//resume이 뭐지?
}.resume()
음 resume()이 뭐지?
URLSessionTask
[https://developer.apple.com/documentation/foundation/urlsessiontask]
dataTask(with:)
[https://developer.apple.com/documentation/foundation/urlsession/1411554-datatask]
urlsessionTask의 dataTask가 task를 생성하고 resume()을 통해서 재개한다고 한다....
이것은 카카오api이다. 헤더에 저 값을 넣어서 get으로 요청해야 하는데, 파라미터에 넣는건 url에 넣으면 되는데 헤더에는 어떻게 값을 넣는지 몰ㄹ랐ㅅ다....
if let url = URL(string : url)
var request = URLRequest(url: url)
request.addValue("KakaoAK \(KAKAO_API_KEY)", forHTTPHeaderField: "Authorization")
request.httpMethod = "GET"
// data,res,err in 이 어떻게 사용되는거지? 이 세가지는 어디서 오는 거지?
URLSession.shared.dataTask(with : request ){ data, res, err in
if let data = data{
var jsonDic = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String:Any]
print(jsonDic)
}
}.resume()
}
URLRequest에 이런식으로 설정할 수 있다.
한글로 쿼리를 넣으니 안됬다. 그래서 검색으로 찾아보니
// 한글이 포함된 주소는 작동 하지 않기 때문에 urlQueryAlll 옵션을 사용해서 인코딩을 해줍니다.
let searchLink = str_temp.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!
출처: https://devsc.tistory.com/77 [You Know Programing?]
이걸 보기전에 자꾸 utf8로 바꾸고 있어는데 그게 문제가 아니라 url encoding을 해줘야 되는건데 왜 그랬지;;
추가로 URL관련 클래스가 너무 많아서 뭐가 뭔지 잘 모르겠다.... 시간이 되면 정리해보자.
'ios개발 > 개념 정리' 카테고리의 다른 글
<스위프트> DispatchQueue.global(qos : .userInteractive) (0) | 2020.03.16 |
---|---|
<스위프트> Structure - IndexPath (0) | 2020.03.11 |
<스위프트> UIBezierPath (0) | 2020.03.09 |
<스위프트> UserDefaults (0) | 2020.03.08 |
<스위프트> 에니메이션 animate (0) | 2020.03.08 |