[Xcode] 나는 Global App을 만들 테야 - Localization 2편
·
📱 iOS/Xcode
개요지난 1편에서 Localization에 대해 알아봤었다.여기서 배운 개념을 네부캠 프로젝트 '기록소'에 적용해보았고,그 과정에서 어떻게 작업했는지 특이사항은 뭐가 있었는 지를 기록해보겠다. 작업 진행먼저 En 영어를 등록해주었다.우리 프로젝트는 클린 아키텍처에 따라 레이어를 모듈로 분리했는데, 이에 따라서 localizable.xcstrings 파일을 어디에 둘 지 결정해야 했다. 직접 만지며 익힌 결과 Executable 실행 파일인 MHApplication 모듈에서 생성을 해야만 적용이 되는 것을 확인했고, 하나만 만들어서 관리하면 다른 모듈에 있는 Text도 모두 적용되는 것을 알 수 있었다.그래서 위와 같이 MHApplication - Localizable을 만들었다.참고로 우리 프로젝트는 i..
[Xcode] 나는 Global App을 만들 테야 - Localization 1편
·
📱 iOS/Xcode
개요기록소 프로젝트에 Localization을 진행하기로 했다. (이하 현지화 라고 부름)한국 소비자에 국한하지 않고, 글로벌한 앱을 만들기 위해서는 다국어가 필수라 생각했기 때문이다.우리 프로젝트는 iOS 16 버전 이상을 지원한다.그리고 Xcode는 팀원 모두 16.1을 사용하고 있다. 본 편에서는 현지화에 대한 이론과 iOS에서 현지화 하는 방법 2가지(레거시와 최신 버전)에 대해 설명하겠다.xcode 15 버전을 기준으로 Localization 최신 기술(= String Catalog)가 나왔기 때문이다. xcode 15 이전 버전xcode 15 이전에는 Strings File과 Dict를 이용해서 사용해야 했다. (stringsdict 확장자와 strings 확장자임)위 사진에서 Legacy라고..
[Xcode] 우리의 최종 모듈화 - Multiple Project로 모듈화 공부하기 3편
·
📱 iOS/Xcode
지난 편에서 Library와 Framework의 차이와 Dynamic Library vs Static Library에 대해 알아보았고,본 편에서는 어떻게 저희 팀이 모듈화를 진행했는지 작성해보겠습니다 !! 총 3편의 시리즈로 구성되어 있습니다..! [모듈화 1편] Library와 Framework: https://kyxxn.tistory.com/148[모듈화 2편] Dynamic Library vs Static Library: https://kyxxn.tistory.com/149 그럼 레쯔고 〰️ 문제 상황우리 프로젝트에 클린 아키텍처를 도입했음4명의 팀원이 협업하는 과정에서 모듈화를 도입하여 클린 아키텍처의 각 계층을 잘 관리할 수 있게끔 하고자 함문제 해결모듈화를 결정한 이유Clean Architec..
[Xcode] Dynamic Library vs Static Library - Multiple Project로 모듈화 공부하기 2편
·
📱 iOS/Xcode
지난 편에서 Library와 Framework의 차이를 보았고,본 편에서는 Dynamic Library vs Static Library에 대해 알아보겠습니다 !! 총 3편의 시리즈로 구성되어 있습니다..![모듈화 1편] Library와 Framework: https://kyxxn.tistory.com/148 그럼 레쯔고 〰️ 문제 상황모듈화를 하면서 Library & Framework, Static & Dynamic에 대해 혼동이 왔음용어에 대한 개념 차이이전 포스팅 보러가기: Library vs FrameworkDynamic Library(Framework) vs Static Library(Framework)Target - General - Frameworks, Libraries, and Embedde..
[Xcode] Library vs Framework - Multiple Project로 모듈화 공부하기 1편
·
📱 iOS/Xcode
본 시리즈에서는 우리 팀이 모듈화를 적용하기 위해 공부했던 과정 중 을 담아볼 건데요,이번 편에서는 Library vs Framework을 알아보겠습니다 ! 총 3편의 시리즈로 구성되어 있습니다..!그럼 레쯔고 〰️  문제 상황모듈화를 하면서 Library & Framework, Static & Dynamic에 대해 혼동이 왔음Library vs Framework 용어에 대한 개념 차이 문제 해결많은 블로그에서 Library vs Framework 용어에 대한 설명을 많이 올려두곤 한다.그러나, 글을 읽다보면 대부분이 용어를 혼용해서 모듈화를 설명하고 있다.본 포스팅에서는 간단하게 Library vs Framework 의 개념적 핵심만 살펴보겠다.  LibraryTarget에서 사용될 데이터와 코드들의 ..
[XCTest] 유닛 테스트(Unit Test) 사용후기
·
📱 iOS/Xcode
공부한 내용XCTest, Unit Test단위 테스트란 ?기능 단위 별로, 테스트 코드를 작성하는 것TDD처럼 꼭 테스트 코드를 먼저 작성하진 않아도 됨즉, 순수하게 테스트 코드를 작성하는 것단위 테스트 장점문제점 발견→ 모듈을 고립시켜 각 부분별로 정확한 동작하는지 디버깅이 가능함변경이 쉬움→ Unit Test를 믿고, 리팩토링을 쉽게 도전할 수 있음통합이 간단유닛 자체의 불확실성을 제거하기에 상향식 테스트 방식에서 유용하다고 함단위 테스트 작성 방법FIRST 속성Fast: 빠른 속도로 테스트 수행Independent: 서로 독립적으로 실행Repeatable: 반복적으로 실행, 순서나 환경이 달라져도 동일한 결과Self-Automation: 모든 과정을 자동으로 처리Timely: 변경사항을 더욱 빠르게..
[Xcode] 협업 간 pbxproj 충돌 방지하기
·
📱 iOS/Xcode
학습 목표깃허브 협업 간 pbxproj 파일에 대한 충돌 해결학습 내용pbxproj 파일이란 ?Build Setting(실제 프로젝트의 설정)을 담은 파일프로젝트 내부에서 생성된 파일들을 파일 유형에 따라 reference를 저장하고 있다.pbxproj에 대한 충돌은 위 설정 파일에 대한 reference가 없을 때 발생pbxproj 충돌 해결방법pbxproj 파일을 binary 파일로 취급하게 해야 함프로젝트 최상위 폴더(README.md가 있는 곳)에서 .gitattributes 파일을 만들고 설정해당 코드를 추가*.pbxproj binary merge=union배운 점최상위 폴더에 .gitattributes를 추가하면 해결 가능하다고 하니미리 설정해두는게 좋을 거 같습니당참조 링크[git] Xcod..
[디버깅 회고] 네트워크 통신 공부 중 발생한 보라색 에러
·
📱 iOS/Xcode
App Transport Security has blocked a cleartext HTTP connection to (대충 서버주소) since it is insecure. Use HTTPS instead or add this domain to Exception Domains in your Info.plist.위와 같은 에러가 발생했다. 내가 설정해둔 baseURL의 서버 도메인이 HTTPS가 아닌 HTTP였기 때문에 발생한 오류였다.보라색 에러가 뜰 때마다 놀라곤 하는데, 애플에서는 HTTP를 사용을 금하고 있다. (보안이 문제니까 ㅇㅇ) Info.plist에서 'Allow Arbitrary Loads - YES'로 해주면 된다. 애플은 2018년 이후로 HTTP 연결 대신 HTTPS를 통한 보안 연..
[Xcode] .xcconfig 충돌로 인한 Xcode 무한팅김 현상을 겪고서
·
📱 iOS/Xcode
[문제상황] - 내가 끄는게 아니다. 강제로 꺼지는 거임 (메모리에서 아예 날라가버림) - 해당 프로젝트만 문제이다. - 해당 프로젝트 내에서도 'Info - Resource tags'와 'Info - Open As - Source code', '모든 xcconfig 확장자 파일'에서만 팅김 - 추가로 모든 .xcassets이 고장나버림.. (구글링해보니 복사 해두고 삭제했다가 다시 로드하라함) failed to read asset tags: The command '~~' 모든 xcconfig 확장자 파일 및 Info 내에서 Xcode 무한팅김 현상 [해결을 위한 노력] - 똑같은 과정으로 새 레포 파서 xcconfig 파일을 충돌내려고 노력했음 (근데 테스트할 때는 이유를 모르겠으나 잘 돼 버림) - ..
[Xcode] Swift 공부를 위한 Xcode Playground 세팅
·
📱 iOS/Xcode
2023년 12월 27일부로 iOS를 위한 Swift 문법을 공부한다.우선은 야곰 교재로, Playground를 생성하여 문법 공부를 하려는데현재 Xcode 버전은 야곰의 책과 다르게 구성되어 있다. Swift 문법 공부를 위한 Xcode 세팅은 다음과 같다. Create a new Xcode projectOther → EmptyProduct Name 입력 후 NextFile → New → PlaygroundBlank 생성 코테 준비할 거면 macOS -> Command Line Tools