POSTMAN 서버가 구현한 API를 테스트 할 수 있는 플랫폼 포스트맨은 서버 데이터가 현재 어떻게 나오고 있는지 파악하기 위해서 테스트 용도로 사용! 혹은 response body 확인 -> 멀쩡하게 이미지가 출력이 되던 부분이 갑자기 출력이 안될 때 포스트맨에서 해당 URL 찍어서 현재 데이터가 어떻게 넘어오고 있는지 파악! Alamofire pod init vi Podfile pod install "Allow Arbitary Loads" 해당 속성을 YES로 설정해야 빌드시에 네트워크 통신이 가능하다! 1. NetworkResult.swift import Foundation enum NetworkResult { case success(T) -> 서버 통신 성공했을 때 case requestErr(..
Escaping Closure (탈출 클로저) class ViewController: UIViewController { var sampleClosure : () -> Void = {} override func viewDidLoad() { super.viewDidLoad() callback { print("Closure가 실행되었습니다.") } } func callback(closure: () -> Void) { sampleClosure = closure sampleClosure() } } 클래스에 sampleClosure 변수를 선언하고, 해당 callBack 함수 내부에서 매개변수로 받은 closure를 대입하려고 하면 에러가 발생! 스위프트에서는 함수의 파라미터로 전달된 클로저는 기본적으로 함수 내부..
HTTP 프로토콜 서버와 클라이언트는 "정해진 형태"로 "요청"과 "응답"을 주고 받는다. 클라이언트 -> 서버에게 HTTP 방식으로 요청할 때에는 여러가지 방법이 존재! GET -> 데이터를 얻고 싶을 때 요청 HEAD -> 헤더 정보를 얻고 싶을 때 요청 POST -> 내용을 전송할 때 PUT -> 내용을 갱신하고 싶을 때 DELETE -> 내용을 삭제하고 싶을 때 OPTIONS -> 가능한 메소드 옵션을 파악할 때 TRACE -> 리소스가 수신되는 경로를 파악할 때 PATCH -> 리소스를 일부 수정할 때 서버는 요청한 메서드에 맞춰서 Response를 클라이언트에게 전달한다 ! REST (Representational State Transfer) 자원을 이름으로 구분해, 자원의 정보를 주고 받는 ..
Animation 공부할 때가 왔기 때문에 ,,, Animation 1. 우선 애니메이션은 Closure 기반으로 작성한다. 2. Animate가 실행되는 동안에는 user Information (터치 등)이 일시적으로 disabled 되었다가, 끝나면 다시 enable 됩니다,, 3. 애니메이션이 가능한 속성이 정해져있다. frame, bounds, center -> 좌표, 레이아웃 관련값 transform -> 모양 관련 값 alpha, backgroundColor -> 색상 관련 값 UIView.animate(withDuration: TimeInterval, delay: TimeInterval, options: UIView.AnimationOptions, animations: () -> Void c..
TableView를 이용해서 구현해보게씸더. xib를 이용해서 테이블뷰 하나를 만들어줍니다. (원래 만들던 방식으로..!) 거기서 import UIKit class ViewController: UIViewController { @IBOutlet weak var tableView: UITableView! var dataList : [String] = ["가","나","다","라","마"] let refreshControl = UIRefreshControl() override func viewDidLoad() { super.viewDidLoad() registerXib() assignDelegate() initRefresh() } func initRefresh() { refreshControl.addTarg..
UIActivityIndicator import UIKit class ViewController: UIViewController { // lazy 를 사용하면 해당 클래스가 시작될 때 해당 변수가 초기화되지 않고, // 실제로 해당 변수가 사용될 때 초기값이 계산되는 형태 // lazy 를 사용하면 self 형태로 접근 가능 lazy var activityIndicator: UIActivityIndicatorView = { // 해당 클로저에서 나중에 indicator 를 반환해주기 위해 상수형태로 선언 let activityIndicator = UIActivityIndicatorView() activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height:..
테이블뷰를 만드는 방법은 알고 있지만, 세부적인 사항에 대해 정리를 해보겠다. 1. awakeFromNib() 객체가 초기화(인스턴스화)된 후 호출되는 메서드 간단하게, ViewController에서 사용했던 ViewDidLoad()와 비슷한 개념 awakeFromNib()가 일어나기 전에 Init(coder: )가 호출된다. -> 코드로 Cell을 짜는 경우에는 이 부분을 작성 ! Init이 끝난 이후에, awakeFromNib() 호출이 됨 스토리보드나 .xib 형태로 구현하는 경우에는 init을 따로 해주지 않더라도 자동으로 호출이 됨 ! init(coder: ) 시점에서는 --> frame이나 layer 관련 없는 것들만 ! awakeFromNib() 시점에서는 --> Frame, Layer, @..
Sopt 28기 세미나 자료가 정리가 너무 잘 돼있어서 ,,, 감사합닏 ㅏ파짱 직접 전달 방식 (동기 방식) present / push시에 프로퍼티에 접근해 넘겨주는 방식 vc.text = 넘기고 싶은 데이터 와 같은 코드만 작성한다고 데이터가 전달되는 것이 아니다. 해당 vc를 push하거나 present까지 진행되어야 데이터가 전달되는 형태이다. self.navigationController?.pushViewController(vc, animated: true) -> 이렇게 정의한 객체를 현재 navigation의 다음 화면으로 띄우겠다 ! Segue prepare 메소드를 활용해서 데이터를 넘겨주는 방식 segue는 두 뷰사이의 관계를 의미한다. 출발지인 source / 도착지인 destinatio..
시작하는 스토리보드 바꾸는 방법 SceneDelegate.swift name: 부분에 시작하고자 하는 스토리보드 이름을 넣는다 ! info.plist info.plist에서 바꾸고자 Appication Scene Manifest 메뉴를 펼치고 Storyboard Name을 변경한다 ! info.plist의 역할 프로젝트를 생성하면 자동으로 info.plist 파일이 생성되는데, 해당 파일 내에는 프로젝트에서 필수적으로 사용되는 환경 설정 정보들이 key -value 형태로 담겨 있다. 추후, 프로젝트에서 권한을 세팅하거나 프로젝트 전반적인 세팅값을 바꾸고 싶은 경우 수정 ! 만약 SceneDelegate.swift 와 info.plist 두 가지 파일에서 동시에 다른 스토리보 시작점을 정의한다면 Scen..