iyOmSd/Title: Swift 105

[Swift] Tuist 모듈화 응용편 - 모듈화적용후 사용하기

앞서 배운 기본적인 개념을 응용해서 필요한 모듈만 불러와서 사용할 수 있도록 간단하게 구현해볼예정이에요 그래프를 그렸을때 이쁘게 딱 나올수 있도록 App에서 Feature를 만들고 Feature에서 Core에있는 Logger를 사용해보도록 해보게씁니다! 시작은 디렉토리를 먼저 만들어주세요 그 디렉토리로 이동한 후 터미널로 프로젝트를생성 하면 준비는 끝납니다 tuist init --platform ios --template swiftui 프로젝트 설정을 시작해볼까요 tuist edit 프로젝트 설정관련 정의한 파일들은 ProjectDescriptioinHelper폴더에 담을거에요 다른 프로젝트 모듈에서 불러올때 import ProjectDescriptionHelpers 로 불러올 수 있어요 프로젝트를 만들..

iyOmSd/Title: Swift 2023.01.21

[Swift] FCM푸시 연결부터 Postman 테스트 푸시까지

FCM을 적용하면서 겪었던 경험을 공유하려고해요 FCM = Firebase Cloud Messaging 의 약자로 firebase에서 제공해주는 푸시알림기능이에요 먼저 FCM 설정하는 방법을 빠르게 알아보도록할게요 Firebase 설정하기 firebase console에 접근합니다 https://console.firebase.google.com/?hl=ko 로그인 - Google 계정 이메일 또는 휴대전화 accounts.google.com 프로젝트가 없다면 만들기를 눌러서 프로젝트를 만들어줍니다 또롱 준비가 완료됬네요 iOS 앱을 추가해주세요 Xcode 프로젝트의 번들 ID를 정확하게 넣어주세요 plist를 다운받아줍니다 다음 설명대로 패키지에 sdk를 추가해주세요 아까다운받은 plist를 잘넣어주시고..

iyOmSd/Title: Swift 2022.12.01

[Swift] Xcode Cloud(CI/CD) + Tuist(프로젝트관리툴) + dSYMs 업로드까지 자동화 배포하기 (feat. 스크립트쉘)

이번글은 나름 Xcode Cloud 사용에 있어서 심화?편인 것같네요 Xcode Cloud를 설정하면서 겪었던 이슈를 해결한 내용을 써내려가려고해요! Tuist를 사용하는데 CI/CD를 적용하고싶어졌어요 Xcode Cloud환경에선 Tuist를 어떻게 실행시키지..? 에서 시작됬어요 Xcode Cloud 환경도 macOS 같을 거니까 어떠한 명령문을 실행할 수 있어요 터미널에서 입력하는 커맨드들을 이용해서 Tuist를 설치할거에요 설치하기앞서서 Xcode Cloud에서 지원해주는 스크립트 실행시점이 있어요 해당 레포에서 클론하고나서 실행시키는 Post-clone시점 - ci_post_clone.sh xcodebuild 하기 전인 Pre-Xcodebuild시점 - ci_pre_xcodebuild.sh xc..

iyOmSd/Title: Swift 2022.11.11

[Swift] Xcode Cloud CI/CD

CI / CD를 하기위해서 github action + fastlane 혹은 bitrise를 사용하곤 했었죠 CI를위한 코드를 작성해야하고 복잡했었어요 저도 예전에... github action, fastlane를 적용하려면 자료찾고 코드작성하고 이해하지못하면 작성하기 어려웠어요 구현만해놓으면 간편하긴하죠 action과 fastlane을 합친 Xcode Cloud라는 대체제가 있으니까 써보자구요 멤버십 구입한 개발자들은 23년까지 월 25시간 무료...! 아~주 간단하고 처음하더라도 금방 따라할수있어요 🤩 순서대로 진행해볼게요! 제일먼저 설정을 좀 해줘야해요 1. developer 사이트에서 앱에대한 identifier를 등록시켜줘야해요 2. 그다음 connect에서 앱을 생성해주면 준비 끝이에요 이 ..

iyOmSd/Title: Swift 2022.11.01

[Swift] Needle DI Tool - 의존성 라이브러리

DI 도구를 왜써야하죠...? 물론 도구를 사용하지않고도 할 수 있지만 의존성을 관리하는데 도움이되고 간편하게 사용할 수 있기 때문이죠 도구를 사용하지않고 생성자에서 직접 객체를 주입받는다고했을때 도구를 사용하지않는다면 의존성을 관리할 컨테이너를 직접구현해서 사용하거나 객체를 사용하기위해 생성할 때 모든 생성자를 모두 넣어줘야하고 그때 그때 생성해야하는 불편함이 있겟죠 특히 이번에 해볼 Needle은 우버에서 만들어서 사용하고 있는 의존성 관리 도구죠 계층구조로 작성하도록 유도하고 컴파일시점에서 DI를 확인하는 이점을 가지고있어요 다른 의존성 도구들은 런타임에서 확인하기떄문에 개발자가 실수를 하면 실행해서야 알수 있게되는거죠 또한 상위객체의 의존성을 주입할때 따로 코드를 정의하지않아도 자동으로 생성되는 ..

iyOmSd/Title: Swift 2022.09.10

[Swift] Tuist 모듈화 툴

Tuist..! 모듈화를 위한 툴이에요 드디어 해보게 되었는데요... Tuist에대한 정보가 많이 부족하더라구요 정보에 보탬이되고자 정리를 해서 공유해보려고해요! Tuist에러 때문에 쉐도우복싱도 많이하고... 시간 먹방도 많이했어요... 잘 생각해보고 도입하셔야합니다...🫠 협업을 하다보면 project.pbxproj 파일에서 많은 충돌이 일어나는 문제도 해결이되고 관리하는 측면에서도 이점이 있어서 사용한다고해요 Xcode의 설정이나 폴더들의 구조를 Project.swift파일에 정의하고 그 내용을 토대로 프로젝트를 구성해줘요 설치는 어렵지않아요 문서에 있는대로 따라가볼게요 tuist 3.9.0 기준으로 작성된 게시글이에요!! tuist 설치 curl -Ls https://install.tuist.io..

iyOmSd/Title: Swift 2022.08.05

[Swift] Combine의기본 Publisher이란?

예전에 Published를 스유를 기준으로 다뤘다면 이번에는 비동기를 기준으로 다룰 Publisher에 대해 알아보려고해요 둘이 다른건 아니에요! 스위프트 API에서 이미 많은 publisher를 지원하고있어요 이렇게 배열을 만들고 publisher로 변환할 수도 있구요 그래서 publisher가 뭔데? Combine프레임워크에 속한 타입이구요 Combine을 이용하면 delegate callback, completion handler closure를 사용하는대신 이벤트에대한 단일처리 체인을 만들 수 있어요 Combine의 핵심요소로 publisher, operator, subscriber가 있구요 그중 하나가 바로 publisher이죠 애플문서에는 Declares that a type can trans..

iyOmSd/Title: Swift 2022.06.13

[Swift] Xcode 템플릿 만들기

Xcode에서 파일을 생성할 때 이용할 수 있는 템플릿을 만들어 볼거에요 이 템플릿은 Xcode를 설치하면 제공되어있고 익숙한 거에요 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates 경로에 제공되고있어요 템플릿은 아래와같이 보통 UIKit클래스를 만들때 많이 이용하는 그 Cocoa Touch Class와 같이 선택하는 거에요! 이 모든항목들이 템플릿이죠 해당경로로가면 뭐가 되게많죠 기본적으로 필요한 요소는 4개에요 선택했을때 보여줄 템플릿 코드를 담을 파일 해당 템플릿을 나타낼 이미지 plist로 해당 템플릿의 정보를 제공해요 일반적으로 파일을 생성 할 때와 plis..

iyOmSd/Title: Swift 2022.04.26

[Swift] 테스트코드 Quick, Nimble, Mockingbird

테스트코드를 짜는데 도움을주는 라이브러리를 공부하면서 간단하게 알아보려고해요 제일유명한게 Quick과 Nimble이 있죠 Nimble 이 라이브러리의 장점은 엑스코드 XCTAssert에서 제공하는것 보다 많은 Assert들을 제공해요 expect 함수를 사용하구요 // Passes if 'actual' is not nil, true, or an object with a boolean value of true: expect(actual).to(beTruthy()) // Passes if 'actual' is only true (not nil or an object conforming to Boolean true): expect(actual).to(beTrue()) // Passes if 'actual' i..

iyOmSd/Title: Swift 2022.03.25

[Swift] iCloud 연동 CloudKit 사용하기(2/2) - 데이터 연결

2022.02.15 - [iyOmSd/Title: Swift] - [Swift] iCloud 연동 CloudKit 사용하기(1/2) - 추가 및 설정 앞 게시물에서 정의한 아이클라우드를 Xcode내에서 사용할 코드를 작성할거에요 저번에 Book 이라는 Record타입을 만들었죠 Xcode에서 그 타입을 불러오고 데이터를 넣어줄 수 있도록 코딩할거에요 CloudKit을 import해주고 기본적으로 알아야할 타입들은 CKRecord CKContainer CKQuery CKQueryOperation 이렇게 있어요 시뮬레이터로 실행할때 테스트하려면 우선 애플계정을 로그인해줘야해요 시뮬레이터 -> 설정 -> 프로필쪽에 계정로그인을 해줘야 아이클라우드 테스트를 해볼 수 있어요 안하면 권한문제로 테스트를 해볼 수가 ..

iyOmSd/Title: Swift 2022.02.16