본문 바로가기

Swift

[iOS] About Hot & Cold Observable 이번에 들고온 친구는 바로 Hot Observable 과 Cold Observable 입니다.  처음에 이 개념을 만났을 때 정말 와닿지 않았는데 예시로 한 번 이 친구들을 풀어볼까 합니다.  Hot Observable우선 Hot Observable 의 경우는 우리가 축구를 TV 생방송을 본다고 생각하시면 됩니다. 우리가 TV를 켰을 때, 축구경기가 65분이 지나고 있다고 한다면..우리는 다시 0분 ~ 65분까지의 축구경기를 볼 수 있을까요? 또, 우리가 앞으로 받게 될 정보는 뭘까요??  첫번째 질문에 대한 답변부터 하자면, NO 입니다. 우리는 이미 지나간 이벤트들에 대해서는 어떠한 정보도 얻을 수 없어요.축구 경기는 우리가 보건 말건 진행되니까요!!다만 우리가 TV를 틀게 되면 그 이후의 정보들에 .. 더보기
[iOS] About Calendar 이번 게시글에서는 날짜와 관련된 속성들을 알아보려고 합니다~왜와이?!?! 곧 있을 플젝에 쓰려구요~ 자 우선 Calendar부터 갑니다Calendarlet currentDate = Date() // 현재 날짜// 현재 지역 및 설정에 맞는 달력let calendar = Calendar.current// 현재 날짜에서 연도, 월, 일 추출let year = calendar.component(.year, from: currentDate)let month = calendar.component(.month, from: currentDate)let day = calendar.component(.day, from: currentDate)print("Year: \(year), Month: \(month), Day: .. 더보기
[iOS] About GCD (Grand Central Dispatch) 드디어 무섭기도 하고, 어렵기도 해서.... 미루고 미뤄왔던.. GCD 차례입니다. GCD?제가 이해한 순서대로 글을 좀 적어볼게요 1. 우선 GCD란 멀티 스레드 환경에서 편리하게 개발할 수 있도록 해주는 기술 (설명이 부족해..)2. 이 말이 무슨 말이냐면, 해야할 일이 많아진 경우에 알아서 일을 분배해주고, 일할 쓰레드가 부족하면 알아서 늘려주는 기술3. 기본적으로 작업은 메인 스레드에만 할당되어 있는데, 메인스레드도 일을 하고 다른 스레드들 역시 일을 하도록 만듦. (동시성 프로그래밍) > 비동기 작업4. 개발자는 QUEUE라는 곳에 어떤 작업을 진행할지 코드를 넣어주기만 하면 되고, 일의 분배나 스레드 관리는 신경쓰지 않아도 됨. 저는 위 순서대로 GCD 개념을 익혔는데요, 음 확실히 1단계에서.. 더보기
[iOS] About Pagination 이번 글에서는 Pagination에 대해 글을 적어보려 합니다. Pagination?페이지네이션을 사용하면 데이터를 불러올 때, 전체 데이터를 받는 것이 아니라 지정된 개수의 데이터만 전달받게 됩니다.우리가 쇼핑몰에 가방을 검색했는데, 검색 결과 10만개라면?한 번에 받아보는 것보단 20개씩 잘라서 보는 것이 사용자도 좋고, 네트워크 과호출도 줄여볼 수 있을겁니다. 이 페이지네이션에는 커서, 오프셋을 기반으로 한 총 두 가지의 페이지네이션이 있습니다. 그럼 하나씩 살펴보겠습니다..!!  Cursor-based Pagination여기서 Cursor란 마지막으로 조회한 항목의 고유한 값입니다. 다음 데이터 배치가 시작되어야하는 위치를 나타내는 것이죠.무엇을 기준으로 이 값을 정해질지는 API마다 다르기에 문.. 더보기
[iOS] About Subscribe, Bind, Driver + @ 오늘은 Subscribe, Bind, Driver에 대해 이야기 해보려고 합니다!! 이들은 모두 Observable이나 Driver 등의 스트림을 구독하고,해당 스트림에서 발생하는 이벤트를 처리하는 역할하하는데요!! 좀 더 자세하게 들어가보죠  Subscribe- Observable이 이벤트를 내보낼 때마다 해당 이벤트를 관찰하고 처리하는 작업 진행- 에러 처리, 스레드 지정 가능Bind- Bind의 내부에 Subscribe가 존재- 방출한 이벤트를 Binder (UI 업데이트에 사용되는 옵저버, onNext 이벤트에 대해서만 반응) 에게 전달- Binder 덕에 에러 없이 우리가 UI요소를 처리할 때 주로 사용- 스레드 지정 가능 Drive- 역시 주로 UI에 사용, 오직 메인스레드에서만 실행- Dri.. 더보기
[iOS] About RxSwift 이번 글에서는 그냥 RxSwift 주요 키워드들을 주저리 주저리 제 의식의 흐름따라 읊어보고자 합니다.용어들이 너무 생소하기에..처음 보는 아이들과 익숙해지고 친해지기 위함이죠 😁Observable   이벤트를 전달(방출) 하는 아이그럼 그 이벤트에는 뭐가 있냐?? 1. onNext2. onComplete3. onError4. onDisposed 이렇게 총 네 네가지 입니다. 보통 위 네가지 이벤트를 유튜브에 빗대어 많이들 표현하시더라구요!저도 한 번 해볼까 합니다. ㅋ.ㅋ 우선 onNext는 새로운 이벤트가 방출 되는 것이기 때문에, 유튜브에 영상 업로드가 되겠죠?onComplete는 더이상 방출될 요소가 없는 것이기에, 유튜버가 유튜브를 그만하는 상황으로 보시면 됩니다.onError는 오류로 인하여.. 더보기
[iOS] About 램 모델클래스 > 구조체 이번 글에서는 램으로 저장한 정보를 구조체 형태로 가져오는 방법에 대해 알아보려합니다!! 아마 램을 이용하여 데이터를 저장하는 것은 너무나 익숙할텐데, 그럼 그 반대는..?단일 정보를 가져오는 것 역시 익숙한데.. 전체를 그대로 구조체 형태로 가져오고 싶으면..? 위의 두 가지에 대한 궁금증으로 이 방법을 찾아보게 되었답니다 😀 우선 제가 프로젝트에서 구현한 코드 부터 보여드리면Realm 모델 클래스Response 구조체 이렇게 코드를 구현했습니다. (이제와서보니 네이밍이 좀 아쉽네요... 암튼!!😂) 저장을 위한 클래스와 구조체는 다음과 같고, 그럼 이를 변환해주는 메서드 코드도 보여드릴게요!  func convertToResponse(personality: Personality) -> Res.. 더보기
[iOS] About Property Wrapper 지금까지 써오던 UserDefaultManager 코드 개선해보려고합니다제가 구현한 코드부터 보여드릴게요!final class UserDefaultManager { private enum UserDefaultKey: String { case userNickname case userId case profile } static let shared = UserDefaultManager() private init() {} var userNickname: String { get { UserDefaults.standard.string(forKey: UserDefaultKey.userNi.. 더보기