전체 글 63

iOS Background Task 적용 ( 백그라운드에서 API 호출하기 )

안녕하세요! 오늘은 Background에서 API 호출 및 앱 갱신을 통해 사용자에게 지속적인 데이터를 제공하는 방법에 대해 알아 보겠습니다.  공식 예제를 통해 브레이크 포인트를 사용해서 어떻게 구성되어 있는지 확인해보는 것도 좋을 거 같습니다. 아래는 공식문서에 있는 예제입니다.https://developer.apple.com/documentation/backgroundtasks/refreshing-and-maintaining-your-app-using-background-tasks Refreshing and Maintaining Your App Using Background Tasks | Apple Developer DocumentationUse scheduled background tasks fo..

iOS 2024.07.23

Custom SPM 제작기 part2.

바로 시작하겠습니다!   UIComponents 폴더 생성 -> BaseLabel 파일 생성   하지만 Import UIKit을 하는 순간 Error 발생 어떤 Error인지 확인해보니UIKit is not available when building for macOS. Consider using #if canImport(UIKit)to conditionally import this framework. : UIKit이 macOS에서 사용할 수 없음을 의미   해결방법으로는 조건문을 설정해주면 됩니다.  # if canImport(UIKit)  ~ #endif#if canImport(UIKit)import Foundationimport UIKitopen class BaseLabel: UILabel { ..

iOS 2024.06.16

Custom SPM 제작기 part 1.

안녕하세요! 입사한지 5개월된 따끈따끈 신입 개발자입니다.오랜만에 블로그를 써서 감회가 새롭습니다. ㅎㅎ이번 챕터는 회사에서 일하면서 UI를 구성할 때 편하게 적용 할 수 있는  Base UI와 다른 SPM을 같이 사용할 수 있는 SPM을 만들어 보겠습니다. ( UI를 구성할때마다 BaseLabel, BaseButton 만드는게 귀찮아요... ㅠ )  편한 말투로 시작하겠습니다! 그럼 시작!   Xcode를 사용하면서 SPM은 다들 사용해보셨죠?전 주로 SnapKit, Alamofire, Firebase 을 사용하는데... 필요할때마다 일일히 설치를 하는게 은근 귀찮더라구요... ( 아니 이게 귀찮으면... )  한번에 설치하는 방법은 없을까? Base가 되는 것들을 같이 추가하는 방법을 없을까?  에서..

iOS 2024.06.16

ViewController에 Tabman 넣는 방법 ( ContainerView 활용 )

사진과 보는것 같이 중간에 Tabman을 넣으려면 어떻게 해야할까? 가장 쉽고 따라 할 수 있는 방법을 알려드리겠습니다!! ㅎㅎ 1. 일단 Tabman 라이브러를 설치하고 Tabman 기본 구성을 따라 적습니다. 2. 여기서 가장 중요한 점은 변수로 설정한 baseView의 역할입니다. 역할은 Tabman의 버튼의 레이아웃을 설정하는 겁니다. 3. Tabman의 버튼을 설정합니다. 여기서 핵심은 .custom으로에 레이아웃 설정한 baseView가 들어간다는 겁니다. 이렇게 하면 기초적인 부분은 끝났습니다. 참 쉽죠? 한번 정리를 하자면 Tabman 라이브러리 설치 -> import -> baseView 생성 -> 레이아웃 조정 -> bar 설정 -> addBar에 설정한 baseView 적용 ViewC..

새싹 2023.12.13

RxSwift flatMap vs map 차이

RxSwift를 사용할때 flatMap에 대해 어디까지 알고 계신가요? 이번 포스팅에서는 flatMap에 대해 뜯고 맛보고 즐겨보고 map과의 차이점에 대해서 알아보겠습니다. 그럼 시작 !! 하기에 앞서 일단! 간단히 map부터 보겠습니다. 저희가 알고 있던 map에 대해 예시를 통해 복습해보겠습니다. let exampleInt = [1, 2, 3] let exampleString = exampleInt.map { value -> String in return String(value) } // ["1", "2", "3"] 이렇게 배열에서 하나씩 뽑아서 String으로 만든 다음 배열에 담는것이 map의 역할인데요 RxSwift에서도 똑같은 역할을 합니다. 예시 코드를 보겠습니다 현재 Observabl..

iOS 2023.11.17

DiffableDataSource + SkeletonView 라이브러리 적용하기

SkeletionView를 적용하는 방법은 아래 링크를 통해서 확인 가능합니다. https://github.com/Juanpe/SkeletonView GitHub - Juanpe/SkeletonView: ☠️ An elegant way to show users that something is happening and also prepare them to which con ☠️ An elegant way to show users that something is happening and also prepare them to which contents they are awaiting - GitHub - Juanpe/SkeletonView: ☠️ An elegant way to show users that so..

새싹 2023.11.09

앱 스토어 KO 언어 설정 방법

앱 커넥트에서 기본언어 한국어로 설정 했는데, 앱 스토어 EN으로 올라간적이 있어 설정 방법을 공유해보려고 합니다. 1. 첫번째 해당 xcode 파일의 오른쪽 클릭해서 패키지 내용 보기로 들어갑니다. 2. pbxproj 파일을 엽니다. 3. developmentRegion를 찾아서 en으로 되어 있는 부분을 ko로 변경해주고 닫을 닫아주면 됩니다. 4. Archive를 통해 업데이트를 합니다.

새싹 2023.10.31

새싹 - 앱 출시 프로젝트 회고

새싹 과정 2개월차에 앱 출시 프로젝트를 진행하게 되었습니다. 2개월동안 정말 많은 것들을 배웠습니다. 네트워크(URLSesseion, Alamofire), DB(Realm), 다국어, UIButtonConfiguration, Delegate패턴, 싱글톤 패턴, AutoLayout, 값 전달 , CodeBase, ARC, MVC, MVVM, DiffableDataSource... 등등... (이왜진... 2개월 동안 정말 쉴 새없이 달려왔네요) 2개월이란 시간내에 단순히 지식을 전달하는 형식이 아니라 멘토님께서 정말 기초 개념부터 시작해서 빌드업으로 (진짜 빌드업이... 넘사벽임...갓잭) 비전공자들도 쉽게 이해 할 수 있게 머리속에 때려 넣어주었고 데일리 과제를 통해 복습을 하며 배운 기술을 직접 적용..

새싹 2023.10.25

Realm을 사용시 이미지를 Documents에 저장할때 이미지 URL로 저장하는 방법은?

Realm을 사용시 이미지를 Documents에 저장할때 이미지 URL로 저장하는 방법은? 결론을 미리 말하자면 고유한 ID로 설정하자!! 경로와 jpg로 변환하는 함수를 만들고 // MARK: - 도큐먼트 폴더에 이미지 파일 저장하는 메서드 func saveImageFileToDocument(fileName: String, image: UIImage) { // 1. 도큐먼트 폴더 경로 찾기 guard let documnentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return } // 2. 경로 찾기 let fileUrl = documnentDirectory.appendin..

새싹 2023.09.06

URLSession에서 Generic 사용하기

API 통신 하면서 여러 API를 불러오게 되면 각각 URLSession을 만들어 데이터를 불러와야 됐다... 그렇다면 한개의 URLSession만 만들어서 사용할 수 있는 방법은 없을까? 에서 출발한 포스팅입니다. 그럼 시작하겠습니다. 컬렉션 뷰를 사용해서 만들어보겠습니다 일단 VC를 깔끔하게 사용하기 위해서 VC, View, Cell을 분리해주었습니다. ( 배운거 사용하고 싶었어요...) Cell을 먼저 만듭니다. import UIKit import SnapKit class FirstCell : UICollectionViewCell { let imageView = { let image = UIImageView() image.backgroundColor = .gray image.contentMode =..

새싹 2023.09.01