일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rxswift
- 리펙터링
- swiftUI
- Protocol
- ios
- 애니메이션
- Xcode
- 스위프트
- Clean Code
- swift documentation
- 리펙토링
- ribs
- Refactoring
- 리팩토링
- map
- HIG
- UITextView
- RxCocoa
- SWIFT
- MVVM
- collectionview
- uiscrollview
- combine
- 클린 코드
- uitableview
- Observable
- UICollectionView
- tableView
- Human interface guide
- clean architecture
- Today
- Total
목록MVVM (16)
김종권의 iOS 앱 개발 알아가기
Domain Layer : 영화 검색 결과 성공한 쿼리를 저장하는 Entities, SearchMoviesUseCase, DIP를 위한 프로토콜 Repository Protocol위치가 UseCase에 존재 UseCase에 주입: 비즈니스로직에 필요한 Repository UseCase끼리는 서로 의존 가능 protocol SearchMoviesUseCase { func execute(requestValue: SearchMoviesUseCaseRequestValue, completion: @escaping (Result) -> Void) -> Cancellable? } final class DefaultSearchMoviesUseCase: SearchMoviesUseCase { private let mov..
MVVM 구조 Presentation Layer: View + ViewModel ViewModel은 UI이벤트가 발생하면 '무엇'을 해야하는지 알고, UseCase를 요청 후 View에 업데이트 알림 역할 Domain Layer: UseCase + Model 비즈니스 로직 계층 저장소에 관한 Interface가 포함 다른 프로젝트에서도 재사용 될 수 있도록, 다른 부분에 의존하지 않고 의존을 받는 상태 (Repository): Domain과 Data의 인터페이스 역할 protocol Data Layer: DataStore + Entity Presenter(ViewModel) vs UseCase ViewModel에 비즈니스 로직을 넣는 경우는 잘못된 접근 비즈니스 로직은 UseCase에 존재 ViewMod..
* 사용되는 라이브러리 - RxSwift - RxCocoa - RxTest (RxSwift의 스트림들을 테스트 할 수 있는, 가상 시간을 함께 이벤트를 발생시킬 수 있는 프레임워크) - RxNimble (expect라는 함수로 명료하게 테스트를 할 수 있게 해주는 프레임워크) 1. 간단한 RxSwift, MVVM구조 설계 RxSwift구조 코드 참고: ios-development.tistory.com/173 2. Unit 테스트 코드 작성 1) Nimble프레임워크에서 사용 할 events함수 정의 import Foundation import RxSwift import RxTest import Nimble import RxNimble // Tests그룹 하위에, ExpectationExtensions.s..
MVVM에서 RxSwift와 computed property 활용한 방법 안좋은 방법의 예시 ViewModel에서 UIKit접근하는 형태 toogle변수를 아래와같이 따로 두지 않고, BehaviorRelay하나로 해결가능 // View Model let updateImage = PublishRelay() var selectedAppleButton: Bool = true { willSet(newValue) { if newValue { updateImage.setImage(UIImage(named: "slectpoint"), for: .normal) } else { updateImage.setImage(UIImage(named: "slectedpoint"), for: .normal) } } } func t..
MVVM ViewModel은 데이터를 바꾸기만 함 (View에 어떤 화면을 그러야 하는지 안알려주고, View가 subscribe하고 있음) 그냥 데이터만 갖고 그 값만 바꾸고 있는 애 UI에 관한 요소는 건들지 않음 —> bug가 발생할 위험은 UI가 아니라 logic적인 부분이므로,, 버그가 발생할 확률이 줄어듦 Testable이라는 것은 UI정보가 없어야 가능 정리 ViewContoller : UI에 대한 업데이트만 관리, view model을 subscribe하면서 UI업데이트 view model : logic에 대한 것만 관리 비교) 1. recall - View에서 커멘드를 입력 받아, ViewModel에서 데이터를 가공하여 View에 바인딩 - ViewModel쪽에 Reactive로 만들어서..
1. Observables관련 용어 및 기능 * Observable이란 여러 이벤트들을 생성(="emit")할 수 있는 대상 * sequence 란? * Observable == Observable sequence == sequence "observable"을 "sequence"라고 부르는 이유? 1) next : 구성요소를 계속해서 방출시킬 수 있는 기능 (=observable구독자에게 데이터 전달) 2) completed : 이벤트를 종료시킬 수 있는 기능 (=observable구독자에게 완료되었음을 알림) - 그림에서 끝에 막대기가 세로로 있는 것(이미 일이 끝난 상태) 3) error : 이벤트에 오류가 있음을 알고 중간에 종료시킬 수 있는 기능(observable구독자에게 오류를 알림) - 이벤..
1. RxSwift란? ‘RxSwift is a library for composing asynchronous and event-based code by using observable sequences and functional style operators, allowing for parameterized execution via schedulers.’ By Marin Todorov. ‘RxSwift - Reactive Programming with Swift.’ Apple Books. - RxSwift(Reactive eXtension Swift)란 관찰 가능한 연속성(순차적)형태와 함수형태의 연산자를 이용해서 비동기&이벤트를 위한 코드로 구성하고 있는 라이브러리(또한 스케줄러를 통해 parameter..
1. MVC 1) 개념 MVC는 Model, View, Controller 세 가지 중점 -> Controller에 많은 부하가 가게되어 해결할 방법 모색(MVP와 MVVM) ※주의할 점 : apple의 설명은 view와 controller는 밀접하게 붙어있는 개념 (view controller 하나로 취급) 2) MVC구현 코드 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 import UIKit struct Person { // Model let firstName: String let lastName: String } class GreetingViewController : UIViewController { // V..