
Publisher Protocol public protocol Publisher { associatedtype Output associatedtype Failure : Error } ✔️ 말 그대로 Publish(발행)하는 프로토콜. Subscriber의 instance에게 elements를 전달. ✔️ Publisher의 associated types인 Output, Failure는 -> Subscriber의 associated types인 Input, Failure과 매치됨 ✔️ Publisher는 subscriber를 받아들이기 위해 receive(subscriber:)를 함(Publisher와 Subscriber가 연결되는 행위). ✔️ 그래야 Publisher가 발행 하는 값을 Subscribe..

어제 업데이트 날이었는데, 갑자기 안돼서 별 짓을 다했는데 (architecture 설치, excluded Architectures 설정 등) 오류 메시지를 자세히 읽어보니, RealmSwift에만 문제가 있는 듯 함 1. Realm swift 재설치 -> 해결 안됨 2. xcode Downgrade 계속 찾아보니, realm에 배포 버전이 따로 있었음. (아래 링크에서 realm 버전별 xcode 버전 나옴) https://github.com/realm/realm-swift/releases Releases · realm/realm-swift Realm is a mobile database: a replacement for Core Data & SQLite - realm/realm-swift github..

Preprocessor (전처리) 앱을 만들다 보면 배포 전에는 개발용 서버를, 배포 시에는 실제 서버를 사용하는 경우가 많음 그럴 때 build configuration을 바꿔가며 설정해줄 수 있음 프로젝트에서 option을 누른채로 해당 프로젝트 이름을 누르면 아래와 같은 창이 나옴. 여기서 build configuration을 설정 가능 사용하는 방법은 #과 함께 써주면 됨. 가장 간단하게 build configuration을 "Debug"로 설정한 후 아래 코드를 실행해보면 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 전처리 (preprocessor) ..

MapKit 1 ※ 프로젝트 이름을 framework와 동일하게 지으면 안됨 ※ 예를들어 MapKit이라고 이름 지으면 안됨 기본 코드 설정 더보기 import MapKit class ViewController: UIViewController { private let mapView = MKMapView() private let mapButton = UIButton(type: .system) override func viewDidLoad() { super.viewDidLoad() setUI() } @objc func buttonTapped(_ sender: UIButton) { print(#function) } } extension ViewController { private func setUI() { m..

async/await async / await 사용이유 - 콜백 지옥 - 에러 처리에서 실수 가능성 있음 기본코드 ⬇️ 더보기 model import Foundation // Codable = Encodable + Decodable struct Quote: Decodable { let content: String } error import Foundation enum NetworkError: Error { case badResponse case communicationError case decodeFailed case noData } controller import UIKit class ViewController: UIViewController { let networkService = NetworkSer..

Collapsed TableView 기본 코드 ⬇️ 더보기 import UIKit class ViewController: UIViewController { let tableViewData = [ ["1", "2", "3", "4", "5"], ["1", "2", "3", "4", "5"], ["1", "2", "3", "4", "5"], ["1", "2", "3", "4", "5"], ["1", "2", "3", "4", "5"], ] // MARK: -Properties let tableView: UITableView = { let tableView = UITableView() return tableView }() // MARK: -Life Cycles override func viewDidLoad()..

Result 어떤 결과값이 성공 or 실패로 나뉜다면 Result로 쓰면 좋음. 기본코드⬇️ 더보기 class ViewController: UIViewController { let centerLabel = UILabel() override func viewDidLoad() { super.viewDidLoad() setUI() } } // MARK: -URLSession extension ViewController { func setUI() { setConstraints() setAttributes() } func setConstraints() { view.addSubview(centerLabel) centerLabel.translatesAutoresizingMaskIntoConstraints = fals..
- Total
- Today
- Yesterday