일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swiftUI
- 클린 코드
- combine
- clean architecture
- 애니메이션
- Xcode
- uiscrollview
- 스위프트
- HIG
- Human interface guide
- RxCocoa
- UICollectionView
- swift documentation
- MVVM
- Observable
- 리펙토링
- collectionview
- tableView
- rxswift
- map
- UITextView
- uitableview
- Protocol
- 리팩토링
- ribs
- Clean Code
- SWIFT
- ios
- 리펙터링
- Refactoring
- Today
- Total
목록Switch (7)
김종권의 iOS 앱 개발 알아가기
조건문 초기화 기존 방식 프로퍼티를 하나 선언해 놓고 조건문에 따라 값을 대입하는 방법 func normalInit(a: Int) { let string: String if a.isMultiple(of: 2) { string = "even" } else { string = "odd" } print(string) } Swift5.9+ 에서의 조건문 Swift의 발전 방향을 보면, 더욱 간결하게 표현하는게 목적 Swift5.9에서는 클로저와 조건문을 하나의 표현식으로 사용 가능하므로 타입 명시도 필요 없고, result builder 클로저로 인식하므로 return 키워드 생략도 가능 func newInit1(a: Int) { // String 타입 명시 안해도됨 // result builder 클로저이므로..
Optional 타입 Optional 타입은 제네릭스를 받고, 그 제네릭스는 Optional 안에 감싼 값을 의미 Optional 타입은 enum이며, 2개의 case가 존재 none: 값이 없는 case some(Wrapped): 값이 있는 case enum Optional: ExpressibleByNilLiteral { case none case some(Wrapped) } Wrapped는 값이라는 의미 swift 내부적으로 값이 없으면 none 케이스를 갖도록하고, 값이 있으면 some 케이스를 갖도록 구현한 것 Swift-case 문에서 Optional Binding 활용 Optional 타입은 none아니면 some인데, some 케이스에서는 값을 바로 접근할 수 있으므로 Optional Bin..
패턴 매칭) 많이 사용하는 익숙한 패턴 1) 바인딩 let age = (20, 34) switch age { case let (a1, a2): print("\(a1), \(a2)") default: break } 2) 와일드 카드 switch age { case let (a1, _): // '_' 와일드 카드 패턴 print("\(a1), \(a2)") default: break } 3) 튜플 let (v1, v2) = (1, 2) print(v1) print(v2) 4) enum enum MyEnum { case a(Int) case b } let myEnum = MyEnum.a(10) if case let a(int) = myEnum { print(int) } 패턴 매칭) 익숙하지 않은 패턴 1) 옵..
if 문에서 제공하는 unwrapping 조건문에서 제공하는 unwrapping을 사용하지 않은 경우 var b1: Bool? = true if let unwrppedB1 = b1, unwrppedB1 { print("true b1") } else { print("false b1") } // true b1 조건문에서 제공하는 unwrapping 사용한 경우 바로 b1 == true로 optional 타입이라도 자동으로 unwrapping if b1 == true { print("true1 b1") } else { print("false1 b2") } Bool타입이 아닌 다른 타입도 적용 가능 var integer1: Int? = 1 if integer1 == 1 { print("integer1 is on..
For - in 루프 stride(from:to:by:) stride(from:through:by:): through 포함 While 루프 repeat - while: 조건을 고려하기 전 repeat블록을 부조건 한번 실행 repeat { } while 조건문 switch 문의 암시적 fall through case문을 여러개 사용하지 않고, 컴마로 구분하여 'or 조건' 사용 (주의: if문에서는 콤마가 'end 조건') let anotherCharacter: Character = "a" // 컴파일 에러 switch anotherCharacter { case "a": case "A": print("The letter A") default: print("Not the letter A") } // 정상 ..
switch문을 if, guard 문으로 바꾼 것 switch문은 "=" 앞에 타입(case)을 명시하지만, if case let, guard case let문은 "=" 앞에 값을 명시 enum 정의 enum Person { case name(String) case age(Int) } switch 문 switch person { case .name(let nameValue): print(nameValue) case .age(let ageValue): print(ageValue) } switch문 -> if case let // 앞에 case문 타입을 먼저 쓴 후 뒤에 값이 위치 if case let Person.name(nameValue) = person { print(nameValue) } switch..
* UIKit관련 객체 - TextField, Switch, Stepper, Label * 변수 준비 1 2 3 4 5 6 7 8 9 10 11 class ViewController: UIViewController { var tF: UITextField! var s: UISwitch! var stepper: UIStepper! var l: UILabel! override func viewDidLoad() { // 이곳에 각 속성 정의 } } 1) TextField 1 2 3 4 5 6 7 8 9 tF = UITextField() tF.frame= CGRect(x: 10, y: 50, width: self.view.frame.width, height: 200) tF.font = .systemFont(ofS..