쑤야의 개발 블로그

고정 헤더 영역

글 제목

메뉴 레이어

쑤야의 개발 블로그

메뉴 리스트

  • 홈
  • 태그
  • 분류 전체보기 (98)
    • Algorithm (52)
    • CS (0)
    • AI (15)
      • PyTorch (4)
      • 논문 (3)
      • Open3D (7)
      • DL (0)
    • iOS (30)
      • RxSwift (4)
      • Combine (4)
      • Swift (1)
    • ETC (1)
      • 기타 (1)

검색 레이어

쑤야의 개발 블로그

검색 영역

컨텐츠 검색

분류 전체보기

  • JSON 파일 생성 및 파싱해 프로젝트에서 사용하기

    2023.04.27 by 쑤야.

  • share 연산자로 Observable 재사용하기

    2023.04.09 by 쑤야.

  • scan Operator로 Observable 이전 값 활용하기

    2023.03.23 by 쑤야.

  • Tag DesignSystem 리팩토링 과정

    2023.03.19 by 쑤야.

  • BehaviorSubject 개념 및 활용

    2023.03.18 by 쑤야.

  • Transforming Operators - Map, FlatMap, FlatMapLatest

    2023.03.17 by 쑤야.

  • Protocol과 상속 관계를 활용해 HeaderView 구성하기

    2023.02.05 by 쑤야.

  • UITextField에 값 할당한 경우 이벤트 감지시키기

    2023.01.08 by 쑤야.

JSON 파일 생성 및 파싱해 프로젝트에서 사용하기

Zatch 프로젝트에서 고객센터(FAQ) 부분이 있다. FAQ 내용은 고정이고, 나중에 추가가 될 가능성이 있긴 하지만, 매번 변하는 데이터는 아니다 보니 서버 통신 없이 프론트에서 직접 데이터를 보여주기로 하였다. 프론트에서 데이터를 보여주기 위해 내가 생각한 방식은 아래와 같다. JSON 파일로 데이터 관리하기 JSON 파싱을 통해 UI에 데이터 바인딩하기 JSON 형태로 관리해야겠다고 생각한 이유는, 직접 UI를 구현하는 ViewController나 View에 데이터를 넣어 놓기에는 글자 수가 너무 많으며, 데이터만 따로 관리 가능한 파일을 생성하는 것이 더 효율적이라 판단했기 때문이다. 1. JSON 데이터 설정 JSON 파일에 데이터를 설정할 때 주의해야 할 점은 파일 내에 주석을 작성하면 안된..

iOS 2023. 4. 27. 16:37

share 연산자로 Observable 재사용하기

Share share() 연산자를 사용하면 Subscribe() 할 때마다 새로운 Observable 시퀀스가 생성되지 않고, 하나의 시퀀스에서 방출되는 아이템을 공유해 사용할 수 있다 POME 프로젝트 RxSwift 적용을 열심히 해나가던 중.. 기록 조회 API가 3번씩 호출되고 있는 것을 발견했다. 먼저 상황을 살펴보자면, POME에서 기록 조회를 할 때 페이징 조회를 사용하기 때문에, pageSubject에서 새로운 값이 방출될 때 마다 기록 조회 요청을 하고 있다. recordsResponse라는 Observable 프로퍼티가 기록 조회 응답 결과를 받는 역할을 한다. 응답을 받아오면 tableView를 reload 시키기 위해 recordsResponse를 활용해 새로운 값을 방출한다. 기록 ..

iOS/RxSwift 2023. 4. 9. 23:24

scan Operator로 Observable 이전 값 활용하기

Zatch 프로젝트 리팩토링 중… 검색에서 물품에 대한 카테고리를 선택할 수 있다. 아래 사진처럼 보라색으로 표시되면 카테고리가 선택된 상태, 회색으로 표시되면 카테고리가 선택되지 않은 상태를 나타낸다. RxSwift를 활용해 아래 부분을 리팩토링 하는 중이었다. 카테고리를 단순히 선택 값을 바꿔주는 것은 새롭게 Observable 값을 넣어주면 되기 때문에 어렵지 않게 구현할 수 있었다. 다만 이전 값과 비교해 이전 값이 새로운 값과 같은 경우는 카테고리 선택을 취소시켜야 하는 것 때문에 조금 고민을 했다. 이전 값과 새로운 값이 같은지 비교하기 위해서는 이전 값에 대한 정보가 필요한 것이다. 하지만 이미 방출된 이전 값을 어떻게 알아내야 하는 것일까 싶었다. RxSwift에서 이와 관련한 기능이 있는..

iOS/RxSwift 2023. 3. 23. 00:01

Tag DesignSystem 리팩토링 과정

재치 프로젝트에서는 많은 태그 디자인들이 존재한다. 현재 Tag 디자인 시스템은 Tag라는 부모 클래스가 존재하며, 자식 클래스를 색상으로 분리해 구현했다. extension ZatchComponent{ enum TagColor{ case purple case yellow } enum TagConfiguration{ case height20 case height25 case height29 case height31 } } class Tag: PaddingLabel{ var isDisabled = false{ didSet{ isDisabled ? setDisabledState() : setNormalState() } } var isSelected = false{ didSet{ isSelected ? set..

iOS 2023. 3. 19. 00:26

BehaviorSubject 개념 및 활용

BehaviorSubject Represents a value that changes over time. Observers can subscribe to the subject to receive the last (or initial) value and all subsequent notifications. 생성자 init(value: Element) Initializes a new instance of the subject that caches its last value and starts with the specified value. 생성자 관련 설명을 보면 알 수 있듯이 BehaviorSubject는 PublishSubject와 다르게, 초기값을 가진다. 메서드 public func value() th..

iOS/RxSwift 2023. 3. 18. 22:32

Transforming Operators - Map, FlatMap, FlatMapLatest

Map transform the items emitted by an Observable by applying a function to each item Swift의 고차함수인 map과 동일하게 생각할 수 있다. 각 요소들에 대해서 클로저 연산을 수행해 방출하는 것이다. Observable .of(1, 2, 3) .map{ $0 * 2 } //2 4 6 방출 FlatMap transform the items emitted by an Observable into Observables, then flatten the emissions from those into a single Observable FlatMap merges the emissions of resulting Observables, emitting..

iOS/RxSwift 2023. 3. 17. 22:39

Protocol과 상속 관계를 활용해 HeaderView 구성하기

이번 포스팅에서는 HeaderView 관리를 위한 리팩토링을 어떻게 했는지 작성해보도록 하겠다 1. 리팩토링의 이유 Zatch 프로젝트에서는 아래와 같이 굉장히 많은 HeaderView 디자인이 존재한다. navigation controller에 속하는 view controller의 경우 back button 왼쪽에 navigation title이 위치한 경우 가운데에 navigation title이 위치한 경우 오른쪽 기타 버튼 1개인 경우 오른쪽 기타 버튼 2개인 경우 위의 조합에 따라 header view가 구성되게 된다. 처음 프로젝트를 진행했을 때는 ViewController와 View를 분리하지 않았었다. 프로젝트를 진행하다 보니 ViewController가 너무 많은 역할을 수행하고, UI가..

iOS 2023. 2. 5. 12:30

UITextField에 값 할당한 경우 이벤트 감지시키기

1. Problem 학기 중에 못한 RxSwift 공부 및 프로젝트 적용을 드디어 종강하고 첫 시도를 해보았다 하지만 역시 RxSwift 적용하기 쉽지 않다.. 처음부터 난관에 봉착 상황을 먼저 설명하자면 completeButton은 기본적으로 비활성화 상태 시작 날짜와 종료 날짜를 모두 선택할 경우 completeButton은 활성화됨 하지만 현재 내가 작성한 코드에서 UITextField의 text 값이 바뀌고 completeButton이 활성화 조건을 충족해도 활성화가 되지 않는 문제가 발생했다. func transform(input: Input) -> Output{ let requestObservable = Observable.combineLatest(input.startDateTextField,..

iOS 2023. 1. 8. 23:06

추가 정보

인기글

최신글

페이징

이전
1 ··· 8 9 10 11 12 13
다음
TISTORY
쑤야의 개발 블로그 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바