일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리펙토링
- UITextView
- map
- Protocol
- collectionview
- uiscrollview
- 스위프트
- Refactoring
- swift documentation
- 리팩토링
- MVVM
- tableView
- Clean Code
- Xcode
- 애니메이션
- UICollectionView
- uitableview
- rxswift
- 리펙터링
- RxCocoa
- clean architecture
- SWIFT
- swiftUI
- Observable
- ios
- HIG
- combine
- 클린 코드
- Human interface guide
- ribs
- Today
- Total
목록enum (10)
김종권의 iOS 앱 개발 알아가기
일반적인 DataSource 관리 Section이 여러개이고 Item도 여러개인 경우, 보통 dataSource를 2차원 배열로 하거나, Section과 Item을 갖는 struct를 만들어서 관리 class ViewController: UIViewController { struct Section { var title: String var items: [String] } var sections: [Section] = [ Section(title: "header is a", items: ["A1", "A2"]), Section(title: "header is b", items: ["B1", "B2"]), ] let tableView: UITableView = {...} } extension ViewCont..
네임스페이스 정의 방법 nested-type으로 여러 타입을 지정하고 싶은 경우, 보통 아래처럼 class타입 안에 class로 지정하는 경우가 있지만 이렇게 되면 DesignSystem1이라는 클래스 안에 여러가지의 nested-class가 많아지는 구조로 번식 또 DesignSystem1은 class타입이므로 불필요한 생성자가 존재 public class DesignSystem1 { public class RadioButton { } } 단순히 namespace만 관리할 목적이고 생성자가 필요 없으므로 enum을 활용 // DesignSystem.swift public enum DesignSystem { public class RadioButton { } } 또한 namespace를 정의할 때는 위처..
enum의 RawRresentable 개념 enum에서 각 case들은 rawValue(원시값)을 가질 수 있음 enum이 Rawpresentable을 따르게 되면 아래처럼 rawValue로도 초기화할 수 있고 rawValue 프로퍼티로 값을 가져올수도 있음 즉 RawPresentable은 case문에 관해 값을 초기화하고 해당 값을 또 리턴할 있는 것 public protocol RawRepresentable { associatedtype RawValue init?(rawValue: Self.RawValue) var rawValue: Self.RawValue { get } } 암묵적인 RawPresentable enum을 만들 때 옆에 Int와 같은 타입을 따르게 되면 암묵적으로 RawValue가 In..
Enum 생성자 사용 enum도 class와 struct와 같이 초기화하여 사용할 수 있도록 하는 방법이 존재 ex) 과일 이름 문자열 값을 enum타입의 생성자로 넣으면, 과일 타입으로 나오게끔 하는 방법 let fruit = "apple" let type = Fruit(fruit) print(type) // Optional(Fruit.apple) enum 생성자 사용 방법 enum 준비 enum Fruit { case apple case banana case orange } switch문을 통하여 case타입을 초기화 하는 방식이기에, 내부적으로 초기화할때 사용할 각 타입에 따른 이름 값 정의 private var nameValue: String { switch self { case .apple: r..
* Enum에 Equatable 프로토콜을 준수하여 만드는 방법) https://ios-development.tistory.com/348 Enum에 ~= 연산자 사용하여 init 만들기 일반적인 경우, enum은 String을 준수하여 rawValue로 초기화가 가능 enum NamePrefix: String { case kim case lee case park } (rawValue로 초기화) let namePrefix = NamePrefix(rawValue: "kim") print(namePrefix) // Optional(ExEnum.NamePrefix.kim) ~= 연산자를 사용하면, 손쉽게 equatable 속성으로 만들기가 용이 static으로 ~= 연산자를 정의 failable init으로 초..
enum에서 RawValue를 커스텀할 수 있는 방법? 만약 rawValue를 가져올 때 side effect 처리를 추가하고 싶은 경우? 아래처럼 rawValue를 '='이나 implicit raw value로 지정되는게 아닌 직접 커스텀하고 싶은 경우? enum Person: String { case jake = "jake" case kim // implicit raw value of "kim" } let person = Person.jake print(person.rawValue) // "jake" RawRepresentable을 사용하여 커스텀 가능 RawRepresentable 이란? swift에서의 enum은 하나 이상의 `associated value`를 갖을 수 있는데, 이 값의 rawVa..
Font 패밀리 이름을 가지고 enum으로 만들어 사용 font.regular로 접근할 수 있도록 정의 enum Font: String { case Regular = "myFont-Regular" case Bold = "myFont-Bold" func of(size: CGFloat) -> UIFont { return UIFont(name: self.rawValue, size: size)! } static func regular(size: CGFloat) -> UIFont { return Font.Regular.of(size: size) } static func bold(size: CGFloat) -> UIFont { return Font.Bold.of(size: size) } } 사용 Font.regul..
기본형 단순 타입 구분 (내부적으로 타입 구분용도) enum urlType { case naver case google } 타입을 추가한 형태 값을 명시하지 않으면 (google) 자동으로 타입의 이름으로 매핑됨 enum urlType: String { case naver = "Naver" case google // "google"로 매핑 } String의 값을 enum값으로 매핑시키는 방법 (예시) response로 문자열을 받은 경우, 문자열을 enum으로 매핑할때 필요) let googleUrl = "google" if let urlType = UrlType(rawValue: googleUrl) { // case문에 없으면 nil로 매핑됨 switch urlType { case .naver: rou..