URLSession은 네트워크 작업을 비동기적으로 처리하며, 데이터를 가져오거나 업로드하는 등의 다양한 작업을 효과적으로 수행할 수 있는 도구이다.
URLSession은 네트워크 작업을 처리하기 위한 클래스로 네트워크 요청을 만들고, 데이터를 다운로드하거나 업로드하며, 백드라운드에서도 작업을 처리할 수 있다.
주로 웹 서비스와의 통신, 데이터 다운로드, 업로드 등 다양한 네트워크 작업을 수행하는데 사용된다.
주요 구성요소
예제
import Foundation
let urlString = "https://api.example.com/data"
if let url = URL(string: urlString) {
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data {
// 데이터를 사용하여 원하는 작업을 수행
print("Received data: \(data)")
}
}
// 작업 시작
task.resume()
}
아래는 URLSession을 사용하여 인터넷에 있는 이미지를 불러오는 코드이다.
import UIKit
class URLSessionViewController: UIViewController {
@IBOutlet weak var URLImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
URLManager.shared.getJsonData(completion: { result in
switch result {
case .success(let data):
if let image = UIImage(data: data) {
DispatchQueue.main.async {
self.URLImageView.image = image
}
}
case .failure(let error):
print("Error: ", error)
}
})
}
}
class URLManager {
static let shared = URLManager()
private init () {
}
let url = URL(string: "https://mblogthumb-phinf.pstatic.net/MjAyMjAxMjVfMjAy/MDAxNjQzMTAyOTk2NjE0.gw_H_jjBM64svaftcnheR6-mHHlmGOyrr6htAuxPETsg.8JJSQNEA5HX2WmrshjZ-VjmJWqhmgE40Qm5csIud9VUg.JPEG.minziminzi128/IMG_7374.JPG?type=w800")!
func getJsonData(completion: @escaping (Result<Data, Error>) -> Void) {
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error {
print("Error : NetworkError")
completion(.failure(NetworkError.emptyResponse))
return
}
guard let data = data else {
completion(.failure(NetworkError.emptyResponse))
return
}
completion(.success(data))
}
task.resume()
}
}
enum NetworkError: Error {
case emptyResponse
}
🤳🏻 적용화면
UserDefaults는 간단한 데이터를 저장하고 관리하기 위한 인터페이스이다.
주로 앱 설정, 사용자 기본 설정, 사용자 인터페이스 상태, 앱 버전 등의 정보를 저장하는데 사용된다. 저장된 데이터는 앱이 종료되어도 영구적으로 유지되며, 간단한 키-값 형태의 데이터를 저장하고 조회할 수 있다.
UserDefaults를 사용하면 파일 시스템이나 데이터베이스를 사용하지 않고도 간단한 데이터를 저장하고 읽어올 수 있다. 앱 내에서 쉽게 접근하고 사용할 수 있는 전역적인 저장소로 작용한다.
주요 기능
아래 코드는 UserDefaults를 사용하여 이름을 저장하고, 불러오며, 수정(업데이트)하고 삭제하는 코드이다.
import UIKit
class UserDefaultsViewController: UIViewController {
@IBOutlet weak var saveTextField: UITextField!
@IBOutlet weak var searchLabel: UILabel!
@IBOutlet weak var updateTextField: UITextField!
@IBOutlet weak var deleteLabel: UILabel!
@IBAction func saveButtonAction(_ sender: Any) {
// 저장
UserDefaults.standard.set(saveTextField.text, forKey: "name")
}
@IBAction func searchButtonAction(_ sender: Any) {
// 검색(불러오기)
let search = UserDefaults.standard.string(forKey: "name")
searchLabel.text = search
}
@IBAction func updateButtonAction(_ sender: Any) {
// 수정(업데이트)
UserDefaults.standard.set(updateTextField.text, forKey: "name")
}
@IBAction func deleteButtonAction(_ sender: Any) {
// 삭제
let delete = UserDefaults.standard.removeObject(forKey: "name")
deleteLabel.text = "delete"
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
🤳🏻 적용화면