BehaviorSubject와 BehaviorRelay 를 사용하는 것의 차이를 공부해보자 📚 👇 BehaviorSubject와 BehaviorRelay는 RxSwift에서 자주 사용하는 값 보관형 스트림(시퀀스)이지만, 몇 가지 중요한 차이점이 있다! ✅ BehaviorSubject특징RxSwift의 Subject 계열 타입 (Observer + Observable)초기값이 필요하며, 이후 .onNext()로 값을 방출함현재 값을 유지하고 있고, 새로운 구독자에게는 마지막으로 방출된 값을 즉시 전달함.onError(), .onCompleted() 호출 가능let subject = BehaviorSubject(value: "초기값")subject.onNext("A")subject.subscribe(o..
Devlog👩🏻💻/Swift
BehavioSubject 에서 onNext 와 accept 의 차이를 이해해보자.두 메서드는 RxSwift 에서 값을 방출하는 방법으로 사용된다. ✅ onNext vs accept 차이점1. onNext (기본 메서드)onNext는 Observable에서 값을 방출할 때 사용된다.BehaviorSubject 외에도 PublishSubject, ReplaySubject 등에서도 동일하게 사용된다.onNext를 호출하면 구독자에게 해당 값을 즉시 전파한다.let subject = BehaviorSubject(value: [1, 2, 3])subject.onNext([4, 5, 6]) // 값이 [4, 5, 6] 으로 업데이트 됨 2. accept → RxRelay 에서 제공accept는 BehaviorRe..
compactMap이란?compactMap은 배열의 각 요소를 변환하여 새로운 배열을 반환하는 함수옵셔널(Optionals)을 처리하는 메서드각 요소에 대해 변환 작업을 할 수 있고, 반환 결과가 nil인 경우는 배열에서 제거하고, nil이 아닌 값만 반환.예를 들어, nil을 걸러내거나, 특정 조건에 맞는 값들만 추출하고 싶을 때 유용하다.let numbers = ["1", "2", "three", "4"]let result = numbers.compactMap { Int($0) }// result: [1, 2, 4] // "three"는 변환할 수 없어서 제외✅ map과 차이점map: 변환 후 nil을 포함한 배열 반환compactMap: 변환 후 nil 을 제거한 배열 반환let numbers = ..
클래스에서의 필수적인 초기화 과정이 헷갈렸던 적이 많았는데 강의를 통해 객체를 만들기 위한 여러 가지 초기화 방법에 대해 학습했다. ☑️ 초기화와 생성자 초기화는 클래스, 구조체, 또는 열거형의 인스턴스를 생성하고 속성을 초기화하여 사용할 수 있도록 하는 과정을 의미한다. Swift에서 초기화는 객체가 메모리에 할당되고 속성이 적절히 설정되어 안정적으로 사용될 수 있도록 하는 중요한 단계이다. 인스턴스란? 객체 지향 프로그래밍에서, 인스턴스(Instance)는 클래스, 구조체 또는 열거형과 같은 타입의 실제 예시를 나타낸다. (ex_틀로 찍어낸 무언가) 클래스나 구조체 등의 템플릿(틀)을 기반으로 생성된 실제 데이터를 가리킨다. 즉, 클래스나 구조체를 기반으로 만들어진 객체를 인스턴스라고 한다. // P..

값이 없음을 포함하는 옵셔널의 개념에 대해 학습한 내용을 정리해보고자 한다. ☑️옵셔널 Swift에서는 변수를 저장하는 공간에 박스를 씌워놓는다! 진짜 박스는 아니고 오늘 배울 옵셔널에 대한 비유를 들어본건데 빈 값은 컴퓨터에게는 있어야 할 것이 없다! 🚨는 느낌이기 때문에 에러를 발생시키고 어플리케이션을 종료시키기도 한다. 때문에 이렇게 모든 변수에 박스를 씌워놓고 저장을 하면 값이 있을 때와 없을 때 모두 안전하게 컴퓨터가 값을 읽을 수 있다 😃 값이 없을 수 있는 상황에서 옵셔널(Optional)을 사용합니다. 옵셔널은 물음표 ? 로 나타냅니다. (타입 어노테이션) 옵셔널은 두 가지 가능성을 나타냅니다. 값이 있고 옵셔널로 래핑(wrapping)해놓은 값을 언래핑(unwrapping)하여 해당 값에..

TIL 240124 https://yujjne.tistory.com/6 [Swift] 컬렉션 타입(Collection Type) - Array TIL 240123 📍컬렉션 타입(Collection Type)이란? 스위프트는 많은 수의 데이터를 묶어서 저장하고 관리할 수 있는 컬렉션 타입을 제공한다. 컬렉션 타입의 종류는 다음과 같다. Array Dictionary Set 타입 설 yujjne.tistory.com 저번에는 컬렉션 타입과 Array에 대해 알아봤는데 // 1. 타입 추론 var dict = ["John": 90, "Alice": 95, "Bob": 80] var dict = [] // error : 타입 추론으론 빈 딕셔너리 생성 불가 // 2. Type Annotation //[Strin..
TIL 240123 📍컬렉션 타입(Collection Type)이란? 스위프트는 많은 수의 데이터를 묶어서 저장하고 관리할 수 있는 컬렉션 타입을 제공한다. 컬렉션 타입의 종류는 다음과 같다. Array Dictionary Set 타입 설명 Array 순서가 있는 리스트 컬렉션 Dictionary 키와 값의 쌍으로 이루어진 컬렉션 Set 순서가 없고, 멤버가 유일한 컬렉션 배열(Array) 배열은 멤버가 순서(인덱스)를 가진 리스트 형태의 컬렉션 타입이다. 1. 배열의 선언과 생성 배열 타입을 선언해 줄 방법은 다양하다. Array라는 키워드와 타입 이름의 조합으로 사용 가능하고 대괄호로 값을 묶어 Array 타입임을 표현할 수도 있다. 빈 배열은 이니셜라이저, 리터럴 문법을 통해 생성할 수 있다. //..

TIL 240118 Swift에서는 String 문자열에서 정수 인덱스로 접근이 불가능하다. Swift에서 문자열을 인덱스로 접근했을 경우 다른 언어의 경우에는 str[i] 의 형태로 정수 인덱스로 문자열에 접근이 가능하지만 Swift 에서는 다음과 같이 오류가 발생한다. 'subscript(_:)' is unavailable: cannot subscript String with an Int, use a String.Index instead.' 그래서 Swift에서는 String.Index 타입을 사용하여 문자열의 특정 위치를 나타내야 한다. 다음은 문자열의 인덱스에 접근하는 몇 가지 방법이다. 1. 문자열 인덱싱 (String.Index) str[str.startIndex, offsetBy: index..

TIL 240117 오늘 포스팅은 Swift 기본 문법에 대해 정리해보려 한다!😊 그 중 변수와 상수 , 그리고 타입 추론(Type Inference) vs 타입 어노테이션(Type Annotation) 이다. 1. Swift의 변수, 상수 선언 상수 선언 키워드 let 변수 선언 키워드 var let 이름: 타입 = 값 var 이름: 타입 = 값 👉 우선 스위프트에서 기본적으로 변수나 상수를 지정하는 형태이다. var welcome: String = "Hello Swift!" let yj: String = "My name is yj" 다음과 같이 키워드, 이름, 타입, 값을 지정해주어야 한다. var welcome // error let yj // error 위의 코드처럼 이렇게만 쓴다면 "Type a..
TIL 240116 코딩테스트 입문 알고리즘 문제를 풀면서 고민했던 부분을 정리해보려 한다. 계산 문제를 풀 때 제한 사항 제한 사항 0 ≤ num1 ≤ 100 0 ≤ num2 ≤ 100 다음과 같은 제한 사항 조건을 지켜야하는데 , 와 && 모두 사용이 가능해서 이 부분이 굉장히 궁금했다! 이번 기회에 궁금증을 풀어보려 한다. 🧐 결론적으로 콤마(,)는 조건(condition)을 이어주는 용도로 쓰는 것이고 && 는 boolean expression를 결합하여 참이 되게 하는 논리 연산자이다. 우선 역할을 정리해보면 다음과 같다. 1. 콤마(,): 여러 문장(조건)을 한 줄에 나열할 때 사용된다. 주로 변수나 상수를 같은 줄에 선언할 때 쓰인다. let a = 5, b = 10, c = 15 2. &&..