쑤야의 개발 블로그

고정 헤더 영역

글 제목

메뉴 레이어

쑤야의 개발 블로그

메뉴 리스트

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

검색 레이어

쑤야의 개발 블로그

검색 영역

컨텐츠 검색

SWIFT

  • [프로그래머스] 방금 그 곡

    2023.12.13 by 쑤야.

  • Animation 활용해 TabBar 구현하기

    2023.04.27 by 쑤야.

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

    2023.04.27 by 쑤야.

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

    2023.04.09 by 쑤야.

  • Tag DesignSystem 리팩토링 과정

    2023.03.19 by 쑤야.

  • BehaviorSubject 개념 및 활용

    2023.03.18 by 쑤야.

  • Transforming Operators - Map, FlatMap, FlatMapLatest

    2023.03.17 by 쑤야.

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

    2023.01.08 by 쑤야.

[프로그래머스] 방금 그 곡

로직 m에 대해 악보에 포함된 #을 제거준다. 특정 문자열을 포함하는지 여부를 확인해야 하는데, ABC#과 ABC는 모두 ABC를 포함하기 때문이다. C#을 c로 변환하는 등, C와 구분될 수 있도록 변환해준다. 결과값을 담을 변수를 선언해주는데, 곡의 제목과 재생시간을 같이 담을 수 있는 자료구조를 선택한다. 시간을 분 단위로 변환하여 재생시간을 구한다. m과 마찬가지로 주어진 악보 정보에 대해 #을 제거준다. 악보 정보를 활용하여 재생 시간만큼의 전체 악보를 생성한다. 문자열 포함 여부를 통해 찾고 있는 곡이 맞는지를 확인한다. 찾고 있는 곡이 맞다면, 재생시간 비교를 한다. 재생 시간이 더 길다면 result를 갱신해준다. 코드 func solution(_ m:String, _ musicinfos:..

Algorithm 2023. 12. 13. 17:35

Animation 활용해 TabBar 구현하기

나는 라이브러리를 최대한 사용하지 않으려고 하는 편이다.. 아래 첨부한 기능인 Tab Item 전환 기능을 TabMan 라이브러리를 활용하지 않고 구현해보고자 한다. 이번 포스팅에서 다룰 내용은 탭 상단(아이템) 부분 Animation 적용에 대해서만 다룰 예정이다. 각 Tab에 대한 스크롤/페이징 되는 UI는 현재 프로젝트에서 중요성이 떨어지는 부분으로 나중에 시간이 남으면 추가해 보도록 하겠다. CollectionView 데이터 바인딩은 이미 되어 있다는 가정하에 설명을 진행하도록 하겠다. 1. TabBar Item 선택 감지 changeSelectCell 메서드 내부에서 UI 변경 작업을 진행했다. 아래 작성한 코드에서는 생략했지만 changeSelectCell 메서드 이외에도 처리한 작업들이 있기..

iOS 2023. 4. 27. 20:54

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

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

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 2
다음
TISTORY
쑤야의 개발 블로그 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.