전체 글132 [Swift🍎] rawValue: 원시값 enum 개념에 대해 복습 중에 궁금해서 찾아본 내용 enum의 각 case에 특정한 값(원시값, rawvalue)를 아래와 같이 할당하여 사용한다enum Season: String { case spring = "봄" case summer // 원시값을 생략하면 case 이름과 같은 문자열이 자동으로 할당됨 case autumn case winter}spring의 경우 "봄"이라는 값을 가지고 있다나머지 summer, autumn, winter의 경우 별도의 값을 지정해 주지 않았으므로, case이름과 동일한 string 값을 갖게 된다 let season = Season.springprint(season.rawValue) // 출력: 봄Season.spring의 원시값은 "봄" .. 2025. 2. 13. [스터디14일차][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. [스터디13일차][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. [스터디12일차][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. 이전 1 2 3 4 5 6 ··· 14 다음