티스토리 뷰
728x90
반응형
활용한 예제
RestAPI 서버에 접속하고 관련 데이터를 넣고 빼는 예제
https://www.appcoda.com/restful-api-library-swift/
URL에 위치한 파일(이미지)를 다운로드 받아 UImageView에 디스플레이 하기
https://www.tutorialspoint.com/how-do-i-load-an-image-by-url-on-ios-device-using-swift
RestManager 프로젝트는 이미 설정되어 있는 서버와 http request/response를 해 데이터를 주고 받을 수 있는 데모 프로젝트이다.
새로 사용자를 생성해서 API서버에 저장또는 다운로드 받을 수 있다.
파일이 클라이언트(아이폰)에 일단 다운로드 되어 앱내 위치에 저장된다. 이를 두번째 예제에서 리모트 서버의 이미지를 다운로드 받아 사용하는 대신 클라이언트 상의 폴더를 가리키는 URL을 지정하면 되는 것을 확인하였다.
imageToLoad 변수를 저장한 파일의 URL(/var/mobile/Container... 로 작성된 앱내 파일 위치)을 저장하고 UI 버튼을 누를 때 PressShowImageButton 함수가 실행되어 UIImageView의 extension에 작성된 downloadImage 메소드를 실행시켜 이미지를 해당 url에서 받아 UIImageView에 넣어 보여주게 되는 루틴이다.
import UIKit
class ViewController: UIViewController {
let rest = RestManager()
var imageToLoad: URL?
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
....
}
@IBAction func PressShowImageButton(_ sender: Any) {
let url = imageToLoad
imageView.downloadImage(from: url!)
}
...
...
...
func getSingleUser() {
...
self.imageToLoad = saveURL
...
}
}
extension UIImageView {
func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
URLSession.shared.dataTask(with: url, completionHandler: completion).resume()
}
func downloadImage(from url: URL) {
getData(from: url) {
data, response, error in
guard let data = data, error == nil else {
return
}
DispatchQueue.main.async() {
self.image = UIImage(data: data)
}
}
}
}
728x90
반응형
'Programming > iOS' 카테고리의 다른 글
SwiftUI 자료 모음 (0) | 2019.10.15 |
---|
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- MicroBit
- vscode
- Python
- WSL
- 한글
- git
- Stable Diffusion
- 단축키
- Fusion360
- 3d프린터
- fablab
- Linux
- tensorflow
- CAD
- 메이커
- vvvv
- 우분투
- Arduino
- conda
- ssh
- Maker
- cura
- nodejs
- 파이썬
- Streamlit
- opencv
- nvidia
- docker
- comfyUI
- ubuntu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함