Swift
-
Swift Adding/Removing ChildViewControllerSwift/Tips & Tricks 2022. 5. 3. 12:00
Add private func presentPreview(with videoURL: URL) { previewVC = VideoPlayerViewController(videoURL: videoURL) guard let previewVC = previewVC else { return } addChild(previewVC) view.addSubview(previewVC.view) previewVC.view.snp.makeConstraints { make in make.center.equalToSuperview() make.width.height.equalTo(view.snp.width) } } Remove private func removePreview() { if self.children.count > 0..
-
Date FormatSwift/Tips & Tricks 2022. 4. 15. 16:55
import UIKit import Foundation extension Date { public func toString(dateFormat: String = "HH:mm") -> String { let formatter = DateFormatter.current formatter.dateFormat = dateFormat return formatter.string(from: self) } } extension DateFormatter { public static var current: DateFormatter { let formatter = DateFormatter() formatter.timeZone = TimeZone(identifier: "Asia/Seoul") formatter.locale =..
-
Cocoapods versionsSwift/Tips & Tricks 2022. 4. 15. 10:18
Swift 에서 다른 Dependency 를 이용할 때 CocoaPods 를 사용할 수 있다. Version 을 정하지 않고 Podfile 에 아래와 같이 쓸 수도 있겠지만, pod 'FBSDKLoginKit' pod 'FBSDKShareKit' 잘 되던 Project 가 어느순간 Package 의 업데이트로 코드가 달라지면 내 소중한 프로젝트가 망가질 수가 있다. 이때, Version 을 정해두면 안심하고 사용할 수 있다. (Swift Package Manager 에서도 가능) 특정 버전으로 정하기 pod 'AFNetworking', '1.2.0' 특정 버전 이상 또는 이하 등 Logical Operator 을 이용하는 경우 '> 0.1' Any version higher than 0.1 '>= 0.1..
-
Swift KVO ( Key Value Observing, Reactive Programming)Swift/Swift Language 2022. 4. 14. 00:17
// // ViewController.swift // KVO // // Created by Kyle Lee on 10/12/18. // Copyright © 2018 Kyle Lee. All rights reserved. // import UIKit class User: NSObject { // send notification (dynamic) @objc dynamic var name = String() @objc var age = 0 { willSet { willChangeValue(forKey: #keyPath(age))} didSet { didChangeValue(for: \User.age)} } } class ViewController: UIViewController { @IBOutlet weak..
-
FlatMap, CompactMapSwift/Tips & Tricks 2022. 4. 8. 16:02
Swift 를 쓰다보면 (다른 언어들도 마찬가지겠지만) Array 를 다룰 때 flatMap, compactMap 에 대해 다루게 된다. 먼저 정의부터 살펴보자. compactMap Summary Sequence 의 각 element 에 주어진 transform 을 시행했을 때 nil 이 아닌 결과들로 이루어진 array Discussion transformation 이 optional value 를 생성시킬 수 있을 때, optional 이 아닌 값들의 array 를 원할 때 사용하면 된다. 복잡도: O(m+n), n: sequence 의 크기, m: 결과의 크기 Example 예시에서 .map 은 optional 을 생성하고 nil 값을 생성할 수도 있지만, compactMap 을 사용할 경우 이때에..
-
Swift 개발 / 배포 코드 다르게 하기 (if DEBUG)Swift/Tips & Tricks 2022. 4. 8. 10:37
#if DEBUG // 개발할 때 테스트 하는 코드 입력 #else // release 될 때 실행하는 코드 입력 #endif 만약 Debug Mode 코드에 초기화 관련 내용이 들어가고, 본인의 데이터도 지키고 싶으면 #if targetEnvironment(simulator) 를 추가하여 'Simulator' 인 경우로 한정해서 테스트 할 수도 있다. #if DEBUG #if targetEnvironment(simulator) // TODO: Remove All #endif #endif 실행하기 전에 알아야 했던... 폰 데이터 초기화 방지 코드이다
-
ObservablesSwift/RxSwift 2022. 3. 25. 18:12
Observable == Observable sequence == Sequence An Observable is just a sequence, with some special powers. - Asynchronous. Observables produce events over a period of time, which is referred to as emitting. Events can contain values, such as numbers or instances of a custom type, or they can be recognized by gestures, such as taps. When an observable emits an element, it does so in what’s known a..