swift 에서 제공하는 퍼센트 인코딩 옵션이 있습니다. 그런데 인터넷에 잘못된 정보가 너무 많더라구요.. 직접 확인하실 수 있는 코드를 소개합니다. extension CharacterSet { func allCharacters() -> [Character] { var result: [Character] = [] for plane: UInt8 in 0...16 where self.hasMember(inPlane: plane) { for unicode in UInt32(plane)
https://docs.swift.org/swift-book/LanguageGuide/Properties.html Property Wrappers 프로퍼티 래퍼는 프로퍼티를 어떻게 저장할지를 관리하는 코드와 프로퍼티를 정의하는 코드를 분리하는 레이어를 추가합니다. 스레드 세이프 체크나 데이터베이스에 기본 데이터를 저장하는 프로퍼티를 가지고 있다면, 모든 프로퍼티에 해당 코드를 적어야합니다. 프로퍼티 래퍼를 쓰면 프로퍼티 정의 코드를 한번 쓰고 적용할 여러 프로퍼티에 재사용하여 적용할 수 있습니다. 프로퍼티 래퍼를 정의하기 위해 구조체 열거형 클래스에 wrappedValue 프로퍼티를 만듭니다. 아래 코드는 12보다 작거나 같은 값을 저장하는 것을 보장하는 구조체입니다.12보다 큰 값을 저장하면 12를 대..
원본 출처 : https://medium.com/flawless-app-stories/you-dont-always-need-weak-self-a778bec505ef You don’t (always) need [weak self] We will talk about weak self inside of Swift closures to avoid retain cycles & explore cases where it may not be necessary to capture self weakly. medium.com [weak self]를 사용할 때, self?.대신 guard let self = self를 사용하면 사이드 이펙트가 생깁니다. 클로저는 비용이 높은 serial 작업, 세마포어 같은 스레드 블락 때문..