UITextField 가 변하는 값에 대해 Rx 형태로 구독을 하고 구독한 값이 변경 되었을 때, 해당 값을 UserDefault로 기록하는 코드를 작성 해 보았다. 순서는 아래와 같다. 1. 스토리 보드에서 UITextField 를 만들어 붙여넣고 2. IBOutlet으로 소스코드로 이어서 변수 생성 3. orEmpty 로 optinal -> String 형태로 받아온다. 4. obserbable 형태로 변환하기 위해 asObservable()을 사용한다. 5. 같은 값으로 호출 되는 것을 막기 위해 distinctUntilChanged()를 사용한다. 6. 구독하고 클로저에서 처리할 내용을 작성한다. 소스코드 @IBOutlet weak var searchTextField: UITextField! pr..

1. 설치 Podfile 에 추가 해 준다. pod 'RealmSwift' 2. 기본 사용 방법 테스트용 class 생성 @objc dynamic 은 swift에서 최적화를 하지 말라는 것으로 이해하면 된다. class Person : Object { @objc dynamic var name : String = "" @objc dynamic var age : String = "" override static func primaryKey() -> String? { return "name" } } Init 초기화는 단순하다. print 문을 찍은 이유는 생성되는 .realm 이라는 db 파일의 위치를 알기 위함이다. //init let realm = try! Realm() print( Realm.Config..

1. 장점 용량/처리 속도 다 가졌다. 개인적으로는 그중에서도 용량에 큰 강점이 있는 거 같다. 네이티브 형태로 애니메이션을 PNG 파일로 만들면 용량이 어마어마하다는 걸 경험했고, 그 당시에는 아무 생각이 없었는데 지금 보니 lottie가 좋은 솔루션이 될 거 같다. 2. 설치 SPM으로 설치해본다. lottie Project -> package Dependencies으로 들어가서 하단의 + 를 선택하고 lottie를 검색해서 바로 설치할 수 있다. 요즘에는 cocoapods 보다도 SPM 이 더 편한 것도 같다. 3. 리소스 준비 우선은 테스트를 해야 되니까 여기 들어가서 맘에 드는 것을 다운로드하여서 사용한다. 만약에 디자이너가 있다고 하면, 잘 이야기해서 플러그인 설치해서 진행할 수 있는지 협의(..

Frame 개념 Frame 은 상위 뷰 안에서의 현재 뷰의 위치라고 보면 되고, 우리가 쉽게 떠올리는 기본적이고 일반적인 개념이라고 보면 된다. Frame 구현 이미지로 확인해보면 아래의 프래임 이미지는 아래와 같이 코딩하고 self.view 에 addSubview를 한 경우이다 testView.frame = CGRect(x: 40,y: 50,width: 50,height: 50) Bounds 개념 Bounds는 카메라는 그대로 있고, 뷰 자체를 움직이고 싶을 때 사용한다. scrollview의 경우 본문의 크기는 휴대폰의 화면 사이즈를 넘어가는 형태로 그대로 있는 것이고 카메라도 그대로인데 뷰가 위로 올라가거나 내려가는 것을 상상해 볼 수 있다. 아래의 그림을 보면 더 잘 이해할 수 있다. Bounds..
오늘은 반응형 프로그래밍의 정의 대해 공부를 해본다. 명령형 프로그래밍 방법은 매회 데이터가 바뀔 때마다 명령을 하여 다시 계산을 하는 형태이고, 반응형 프로그래밍 방법은 데이터가 바뀌면 자동으로 업데이트 되어 결과 값이 바뀌도록 코딩하는 형태이다. 이것을 잘 표현하기가 어려운데 아래의 예제가 아주 잘 표현하고 있는 거 같아 가져왔다. 반응형 프로그램은 일종의 코딩 형태 혹은 기법이라고 발하는 게 맞을 거 같다. 특히 반응형으로 코딩하기 위해 만들어 놓은 library가 reactiveX이고 ios에서는 RxSwift라고 보면 된다. 다만, 이를 구현하기 위해 내부의 구조가 아주 높은 수준으로 추상화되어 있다. 예를 들면 Obserbable이라는 데이터의 스트림을 Object로 보고 관련 처리 방법들이 ..
1. 의미 foreground에서 background / background에서 foreground 로가는 중간 단계에 있는 state이다. 문자 혹은 전화가 왔을 때에도 In-Active상태가 된다. 2. 코드상 표현 ios13부터는 SceneDelegate에서 처리를 하는데 아래와 같이 보면 된다. 만약 벡 그라운드로 가거나 포어 그라운드로 올라올 때, 처리해야 하는 코드가 있으면, 2개의 코드에서 처리하면 된다. sceneWillResignActive, sceneWillEnterForeground func sceneDidDisconnect(_ scene: UIScene) { NSLog("삭제될때") } func sceneDidBecomeActive(_ scene: UIScene) { NSLog("f..
1. 정의 swift 에는 final이라는 키워드를 제공하는데 override를 막는 키워드이다. 즉 해당 키워드를 작성하면, 다른 class에서 상속받지 못한다. 2. 이점 일반적으로 swift 에서는 상속을 고려하여 runtime에 어떤 메서드를 실행할지를 결정하는 반면에 final로 작성해두면, 컴파일 타임에 어떤 함수를 사용할지 (어디서) 결정할 수 있기 때문에 판단 과정이 생략되고 이로 인해 퍼포먼스에 이점이 있다고 할 수 있다. 참고로 만약 final로 선언하고 override를 하게 되면 컴파일 타임 에러가 발생한다. 참고 https://velog.io/@ryan-son/Swift-final-%ED%82%A4%EC%9B%8C%EB%93%9C-%EC%99%9C-%EC%82%AC%EC%9A%A9..
- Total
- Today
- Yesterday
- XCTestExpectation
- 같이쓰기
- xcode whitespace trim option
- Default Rules
- CI/CD
- chatgpt 4o
- swift
- ATS failed system trust
- GCD
- geohash
- MQTT
- 모듏화
- IF (KAKAO) DEV 2022
- 프로그래머스
- GPT4
- swiftLint
- ios
- 빌드자동화
- bitrise
- 무료는 아니지만
- RxSwift
- AppThinning
- Fastlane
- async
- AWS IoT
- ChatGPT
- 코테
- Moya
- jenkins
- firebase
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |