본문 바로가기

전체 글133

[스터디11일차][RxSwift] Traits Traits란?특정한 상황에서 사용하기 쉽게 미리 정의된 Observable의 특별한 형태Single, Completable,  Maybe 세 가지 종류가 있다   Single: 한 번만 값을 방출한다오직 하나의 값(.success(value)) 또는 에러(.failure(error))를 방출하는 Observable자동으로 완료되며 값을 받고나면 더이상 방출되지 않는다 예제 1 - just 정해진 값을 그대로 반환할 때 사용import RxSwiftlet single = Single.just("Hello, Single!")single.subscribe(onSuccess: { value in print(value)})  예제 2 - create 비동기 작업과 같은 상황에서 사용된다(ex. API 요청.. 2025. 2. 7.
[스터디11일차][RxSwift] 테이블뷰 RxSwift 사용 시 UITableViewDataSource와 UITableViewDelegate를 직접 구현할 필요가 없다기존에 사용하던 방식에서는 이 두 가지를 Extention으로 분리해서 관리를 했었는데, Rx 바인딩을 통해 모두 처리할 수 있어서 코드가 간결해진다! ✅  RxSwift 사용 시 변경되는 것(요약)UITableViewDataSource 구현 → 없어짐 (bind(to:)로 대체)UITableViewDelegate 구현 → 없어짐 (rx.modelSelected(_:) 등으로 대체)tableView.reloadData() 호출 → 자동 업데이트DispatchQueue.main.async 필요 → Observable이 알아서 UI 스레드에서 실행indexPath.row를 직접 다루는.. 2025. 1. 31.
[스터디11일차][RxSwift] Subscribe & Bind & Driver 공통점으로는 Observable이나 Driver의 데이터를 구독하거나, UI를 바인딩하는데 사용된다는 점이 있다하지만 각각의 목적과 동작 방식이 다르다  1.  Subscribe가장 기본적인 구독 메서드이며 onNext, onError, onCompleted를 가지고 있으며, 옵저버블의 이벤트 타입에 대한 직접 처리가 가능하다주로 데이터 스트림에서 변화를 감지하고 이벤트를 수동으로 처리할 때 사용한다 내부 로직을 보면 onNext, onError, onCompleted에 대한 처리를 하고 있다  2.  BindUI에 데이터를 바인딩할 때 사용되며 onNext만 가지고 있어, 에러를 방출하지 않는 옵저버블과 함께 사용된다주로 onNext 이벤트만 처리하며 에러 핸들링 로직을 가지고 있지 않다 → 오로지 U.. 2025. 1. 22.
[스터디11일차][RxSwift] 검색 어플 만들 때 유용한 연산자 1.  CatchError옵저버블에서 오류가 발생했을 때 처리하며 대체 값을 반환하거나 새로운 옵저버블로 대체한다예를 들어, 네트워크 요청 실패할 경우 기본 데이터를 제공하거나 사용자에게 오류 메시지를 표시한다 오류를 처리한 이후에도 스트림이 계속 동작함대체 옵저버블이나 값을 방출할 수 있음  예제 1 - 기본 값을 제공하는 CatchError let apiRequest = Observable.create { observer in observer.onError(NSError(domain: "APIError", code: -1, userInfo: nil)) return Disposables.create()}apiRequest .catchError { error in print(.. 2025. 1. 20.
[Swift🍎] URLSession 뜯어보기 1.  URLSession 이란?앱과 인터넷이 상호작용 할 수 있게 도와준다웹 페이지 데이터 가져오기 (HTTP GET 요청)서버에 데이터 보내기 (HTTP POST 요청)파일 다운로드 및 업로드백그라운드 네트워킹 작업  2.  기본 구성 요소URL: 네트워크 요청을 보낼 대상의 주소URLRequest: 네트워크 요청을 구성하는 객체. URL, HTTP 메서드(GET, POST...), 헤더, 본문(body) 등 설정URLSession: 요청을 보내고 응답을 처리하는 객체. 네트워크 작업의 중심URLSessionDataTask: URLSession에서 데이터를 가져오거나 보내는 작업의 단위  3.  사용 방법3-1.  간단한 GET 요청import Foundation// 1. URL 생성let url =.. 2025. 1. 17.
[스터디10일차] Disposable RxSwift를 사용하다 보면 나오는 disposeddisposable은 "사용 후 버리게 되어있는" 이라는 의미를 가지고 있다  이전에 살펴본 Obsevable의 개념을 살펴보면 옵저버블이 관찰 가능한 상태일 때 옵저버가 옵저버블을 구독하는 형태인데,더 이상 옵저버블에 관한 이벤트를 받고싶지 않을 때 구독 해제가 필요함이 때 사용하는 것이 Disposable 이다Disposable = 리소스를 해제하고 이벤트 구독을 중지한다 그럼 어떻게 사용할까?  Disposable의 사용 방법1.  Disposable 기본기본적으로 옵저버블을 사용하면 Disposable 객체가 반환되는데, 해당 객체를 사용하여 구독을 해제한다let observable = Observable.of(1, 2, 3)let subscri.. 2025. 1. 8.
[오류] 레이아웃 설정 후 빌드 무한루프에 빠져버렸다 ♾️ 평소와 똑같이 UI 만들고 SnapKit 사용해서 레이아웃을 설정하던 도중딱 코드 한 줄 바꿨는데, 빌드가 안되고 무한루프에 빠져버렸다(빌드 후 오류가 뜨는 것이 아닌... 무한으로 빌드가 진행됨)  처음에는 컴퓨터 문제인줄 알고 올게왔다 했는데 바꾼 코드 한 줄 주석처리 하니까 정상 빌드가 됐다여기서 의심된 원인 SnapKit을 사용하여 레이아웃 설정 시 UIScreen.main.bounds와 safeAreaLayoutGuide를 동시에 사용하면 안되는가?   를 토대로 찾아보았다  먼저, UIScreen.main.bounds는 디바이스 화면의 절대적인 크기를 반환한다.하지만 safeAreaLayoutGuide는 상위뷰와 관련된 상대적인 레이아웃을 기준으로 제공한다 서로 기준이 다르므로 SnapKit이.. 2025. 1. 2.
[오류] SnapKit 사용 시 No Such file or directory 프로젝트 생성 후 스냅킷만 깔아줬는데 오류 발생  프레임워크에서 SnapKit-Dynamic 삭제함  사라져라  잘됨 아오 2024. 12. 5.
[스터디9일차] CollectionView 1.  기본적인 컬렉션뷰의 구조와 사용class ViewController: UIViewController { //콜렉션뷰 선언 var collectionView: UICollectionView! //데이터 배열 let data = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"] override func viewDidLoad() { super.viewDidLoad() //1. 콜렉션뷰 레이아웃 설정 (기본적인 그리드 레이아웃) let layout = UICollectionViewFlowLayout() layout.itemSize = CGSize(width: 100, height: 100.. 2024. 11. 26.
[스터디8일차] Diffable Data Source 1.  Diffable Data Source란?TableView, CollectionView를 그리기 위한 데이터를 관리하고 UI를 업데이트 한다기존 방식과 달리 데이터의 변경 사항을 자동으로 계산하고 애니메이션을 적용해 UI업데이트를 수행한다핵심은 변경된 데이터만 효율적으로 업데이트 한다는 점이다    2.  DataSource Protocol과의 차이TableView, CollectionView를 그리기 위해서는 DataSource가 필요하다기존에는 DataSource Protocol을 채택하고, 프로토콜에 구현되어 있는 메서드를 사용하는 방법을 사용했다 데이터 업데이트 방식에서의 차이기존의 DataSource Protocol는 reloadData()를 호출하여 데이터를 전체적으로 갱신한다이렇게 하면.. 2024. 11. 13.