URLSession - ViewController import UIKit class ViewController: UIViewController { let temperatureLabel = UILabel() override func viewDidLoad() { super.viewDidLoad() configureUI() NetworkService.shared.fetch(urlString: URL.weather) { weatherInfo in self.temperatureLabel.text = String(weatherInfo.main.temp) } } } //MARK: -UI extension ViewController { final private func configureUI() { setAttribut..

고차함수 var numbers = Array(1...100) 1. ForEach // 1. ForEach numbers.forEach { number in print(number) } // 단축문법 numbers.forEach { print($0) } -for문으로도 가능 var doubledNumbers = [Int]() for number in numbers { let doubleNumber = number * 2 doubledNumbers.append(doubleNumber) } 2. map // 2. map numbers.map { number in return number * 2 } // 단축문법 numbers.map { $0 * 2 } -for문으로도 가능 for number in number..

UserDefaults - 100KB 이하를 저장하는 게 이상적 (안된다는 건 아니고, 100KB가 최적화된 크기) import UIKit class ViewController: UIViewController { let label = UILabel() let button = UIButton(type: .system) override func viewDidLoad() { super.viewDidLoad() configureUI() } } extension ViewController { func save(text: String) { // 저장하는 함수 UserDefaults.standard.set(text, forKey: "Key") } func load() -> String { // 불러오는 함수 guar..

collectView 코드로 짜기 import UIKit class ViewController: UIViewController { var colors: [UIColor] = [ .systemRed, .systemPurple, .systemBlue, .systemCyan, .systemGray, .systemMint, .systemPink, .systemBrown, .systemIndigo, .systemOrange, .systemYellow, .systemRed, .systemPurple, .systemBlue, .systemCyan, .systemGray, .systemMint, .systemPink, .systemBrown, .systemIndigo, .systemOrange, .systemYello..

CustomView 만들기 import UIKit class InputView: UIView { // 1️⃣ enum TextFieldType: String { case id = "아이디" case password = "패스워드" } private let inputLabel = UILabel() private let inputTextField = UITextField() // 2️⃣ var text: String? { return inputTextField.text } override init(frame: CGRect) { super.init(frame: frame) } init(type: TextFieldType) { super.init(frame: .zero) inputLabel.text = type..

스토리보드 삭제하는 방법2 (SceneDelegate 삭제) 1. info.plist에서 삭제 2. Main과 SceneDelegate 파일 삭제 3. AppDelegate에서 작업 import UIKit @main class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) window?.ro..
1. Component 공부 (1) ViewController.swift import UIKit class ViewController: UIViewController { let textField = UITextField() let button = UIButton(type: .system) let stepper = UIStepper() override func viewDidLoad() { super.viewDidLoad() title = "Title" // navigationItem.title = "New Title" let image = UIImage(systemName: "face.smiling") let imageView = UIImageView(image: image) navigationItem.t..

1. 스토리 보드 삭제 (1) info.plist에서 삭제할 것 - Main storyboard file base name - Storyboard Name (2) sceneDelegate.swift에서 작업 import UIKit class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return }..
- Total
- Today
- Yesterday