이것도 일하다가 발견한 ^^,,, 신기한 것 (아래 코드는 바로 직전 포스트 한 코드 재탕) class ViewController: UIViewController { private let slider: UISlider = { let slider: UISlider = UISlider() slider.translatesAutoresizingMaskIntoConstraints = false slider.minimumValue = 0 slider.maximumValue = 100 slider.value = 0 slider.addTarget(self, action: #selector(sliderValueChanged(sender:)), for: .valueChanged) return slider }() overr..
스위프트 업데이트 내용을 보다가 좋은 메서드가 있어서 정리해보려 합니다. 예전에 알고리즘 문제를 풀 때, 이런 함수 있으면 좋겠다고 생각했었는데 딱 맞는 함수가 나왔더라구요. 각 배열 사이에 - 를 넣어줘야 한다고 가정해봅시다. 저 같은 경우 루프를 돌면서 각 원소 뒤에 -를 붙여주고 if조건문을 두어 맨 마지막 원소면 -를 붙여주지 않도록 작성할 것 같네요. 또 다른 간단한 방법으로 .joined(seperator: "-")를 사용할 것 같아요. 위 예시에서 사용할 수 있는 또 다른 함수 Interperse함수를 살펴봅시다. Intersperse는 시퀀스의 각 원소 사이에 주어진 값을 배치해줍니다. 아래와 같이 시퀀스 extension에 코드가 추가되어있습니다. extension Sequence { f..
Landmark구조체가 있다고 가정해본다. struct Landmark { var name: String var foundingYear: Int } Landmark에 Codable프로토콜을 채택한다. Codable프로토콜(Decodable, Encodable)을 채택하면 따로 선언하지 않아도 Codable메서드인 init(from: ) 및 encode(to :)를 지원한다. struct Landmark: Codable { var name: String var foundingYear: Int // Landmark now supports the Codable methods init(from:) and encode(to:), // even though they aren't written as part of i..
업무를 처리하다가 프로퍼티의 상황을 체크해야 하는 작업이 있었다. 프로퍼티 옵저버 프로퍼티 값이 설정될 때마다 옵저버가 호출된다. willSet은 값이 저장되기 직전에 호출된다. didSet은 값이 저장된 직후에 호출된다. 그래서 당연히 프로퍼티 옵저버를 사용해야지 하며 사용했다. 초기화하면서 당연히 여기서 프로퍼티 옵저버도 사용되겠지 하면서 사용했는데 초기화 시에는 옵저버가 호출되지 않았다. 그래서 뭐지 🤔이상하네 하면서 문서를 보니까 나만 몰랐던 내용이 적혀있었다. 또 찾아보니 프로퍼티 옵저버를 사용하기 위해서는 프로퍼티의 값이 반드시 초기화되어 있어야 한다고 나와있었다. 그렇기 때문에 클래스의 init()안에서 값을 할당할 때 didSet과 willSet이 호출되지 않았다. 생각해보니 옵저버가 관찰..
key path는 프로퍼티에 대한 read - only 접근을 제공합니다. key path를 사용하는 방법은 \ 시작으로 베이스 타입을 쓰고 프로퍼티명을 작성합니다. (Root) -> Value를 \Root.value로 사용할 수 있는 기능이다. 예를 들어서 User타입이 있고 안에는 4개의 프로퍼티가 정의되어 있다고 가정합시다. struct User { let name: String let age: Int let bestFriend: String? var canVote: Bool { age >= 18 } } 우리는 구조체의 인스턴스를 생성하고 그것을 배열에 넣을 수 있습니다. let eric = User(name: "Eric Effiong", age: 18, bestFriend: "Otis Milbur..
스위프트5에서 정수를 문자열로 변환하는 방법은 아래와 같습니다. 첫 번째 방법은 문자열 보간으로 \( )를 사용하는 방법과 두 번째 방법은 문자열 이니셜 라이저를 사용하는 방법이 있습니다. 위와 같은 방법으로 사용하면 문자열 그대로 사용 가능합니다. 하지만 반대의 경우는 다릅니다. 스위프트5에서 문자열을 정수로 변환하는 방법은 아래와 같습니다. 문자열 안에 정수가 숨겨져 있다면 정수 이니셜 라이저를 사용해 다음과 같이 둘 사이를 변환할 수 있습니다. 문자열 10은 당연히 숫자 10으로 변환 가능하지만 옵셔널을 리턴하는 것을 확인할 수 있습니다. 왜냐하면 문자열에 숫자가 아닌 것을 포함할 수 있기 때문입니다. 아래와 같이 ab를 정수로 변환하는 것을 불가능합니다. 그래서 정수 이니셜 라이저는 옵셔널 정수를..
- Total
- Today
- Yesterday
- swiftUI
- 머신러닝
- stanford SwiftUI
- objc
- 책 후기
- 딥러닝
- rxswift
- iOS SwiftUI
- 스위프트UI
- swift5
- 문자열
- 알고리즘
- Xcode
- 책
- Algorithm
- SWIFT
- wwdc
- ios
- 애니메이션
- leetcode
- string
- Animation
- Deep learning
- ReactiveX
- 스위프트
- objective-c
- RX
- ARC
- 책 추천
- 독서
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |