🍎 iOS

    [Swift / Xcode] 프로젝트 Storyboard 삭제 세팅 - Code Base UI

    프로젝트 진행 간 Storyboard를 제거하고 Code로만 UI를 구성해보게 되었는데, 이를 위해 필요한 세팅을 기록해두고자 합니다. ✅ 1. Main Storyboard 삭제 프로젝트에서 Storyboard를 제거하는 것이 목표이기 때문에 우선 Main Storyboard를 삭제해줍니다. ✅ 2. Project TARGETS Project TARGETS -> Build Settings -> filter에 "main" 검색 -> UIKit Main Storyboard File Base Name 삭제 ✅ 3. Info.plist 수정 Info.plist -> Scene Configuration -> Application Session Role -> Item 0 -> Storyboard Name 삭제 ✅..

    [Swift 문법 정리] 5-2. 함수 - 일급 객체, 클로저

    "꼼꼼한 재은 씨의 Swift 문법편" 책을 공부하며 정리한 내용입니다. ✅ 일급 객체, 일급 함수? 일급 객체(First-Class Object)란 다음의 조건을 만족하는 객체를 말합니다. 객체가 런타임에도 생성이 가능해야 한다. 인자값으로 객체를 전달할 수 있어야 한다. 반환값으로 객체를 사용할 수 있어야 한다. 변수나 데이터 구조 안에 저장할 수 있어야 한다. 할당에 사용된 이름과 관계없이 고유한 구별이 가능해야 한다. 그리고 함수가 위의 조건을 만족하면 그 함수를 일급 함수(First-Class Function)라고 합니다. 또한 언어가 일급 함수를 가지면 그 언어를 함수형 언어라고 하고, Swift는 함수형 언어입니다. 일급 함수는 다음과 같은 특성을 가집니다. 1. 변수나 상수에 함수를 대입할..

    [Swift 문법 정리] 5-1. 함수 - 기본 개념, 매개변수

    "꼼꼼한 재은 씨의 Swift 문법편" 책을 공부하며 정리한 내용입니다. ✅ 함수가 가진 이점? 1. 동일한 코드가 여러 곳에서 사용될 때, 함수화하여 재사용할 수 있습니다. 2. 여러 기능을 하나의 소스 코드에서 작성하는 것보다 기능 단위로 함수화했을 때 가독성이 좋아집니다. 3. 로직을 변경할 때 함수 내부를 수정하면 되기 때문에 용이합니다. ✅ 사용자 정의 함수 정의 func testFunction(a: Int, b: Int) -> Int { return a + b } 기본적인 함수의 정의 방법은 위와 같습니다. 함수 이름의 첫 글자는 반드시 영어 또는 언더바로 시작해야하고, 매개변수 값이 필요 없다면 빈 칸으로 생략할 수 있고, 반환 값이 없다면 반환 값 또한 생략할 수 있습니다. 하지만 반환 값..

    [Swift 문법 정리] 4. Optional - nil, Optional binding 등

    이번 글은 Optional에 대한 정리입니다. 0. Optional ?? Optional은 Swift에서 도입된 새로운 개념으로, 언어 차원에서 프로그램의 안전성을 높이기 위해 사용됩니다. ➡️ 처리 과정에서 문제가 있을 경우 오류를 발생시키고 실행을 중단시키는 대신 nil을 반환합니다. ➡️ 따라서 오류가 발생할 가능성이 있다면 Optional 타입으로 정의해야 합니다. nil ❓ ➡️ "값이 없음" 을 의미하는 특수한 값 ➡️ 순수하게 아무 것도 없다는 것으로, 다른 언어에서 null로 표현되기도 합니다. ➡️ 실패를 의미하면서도 오류를 던지는 것이 아닌 값 ➡️ 원래 Objective-C에서는 빈 메모리 주소를 가리키는 값이었습니다. nil을 사용할 수 있는 타입과 사용할 수 없는 타입을 나누었을 ..

    [Swift / XCode] 다크 모드 / 라이트 모드 고정시키기

    이번 글은 다크 모드 / 라이트 모드 고정시키는 방법입니다. iOS13부터 아이폰에서 다크 모드를 지원하기 시작했고, 저도 현재 다크 모드를 사용 중입니다. 그런데 이 다크 모드나 라이트 모드가 기본적으로 앱에도 똑같이 적용이 되기 때문에 초기 앱 개발 단계에서나 서비스의 디자인 측면에서 다크 모드나 라이트 모드를 고정시켜 개발해야 할 일이 생깁니다. 고정시키는 방법은 생각보다 간단합니다. 우선, 프로젝트의 Info.plist 를 열어줍니다. Information Property List 옆의 + 버튼으로 속성을 추가하고, Key 값은 Appearance, Value 값은 모드에 따라 Light / Dark 를 입력하면 됩니다. 여기서 주의해야할 점은 코드로는 속성 값이 아래와 같이 다른 것을 볼 수 있..

    [cocoapods] "[!] The following Swift pods cannot yet be integrated as static libraries" 에러 해결 - firebase pod install

    cocoapods를 이용해 프로젝트에 firebase를 추가하던 중 pod install 과정에서 에러가 발생했습니다. 구글링하여 원인을 알아내던 중, cocoapods version 1.9 이상에서 Swift static libraries의 연결을 허용한다는 것을 알게 되었고 use_frameworks! :linkage => :static 위의 코드를 Podfile 에 추가하여 간단하게 해결할 수 있었습니다 ! 참고 : https://github.com/lottie-react-native/lottie-react-native/issues/784

    [cocoapods] 맥북 m1 환경에서 pod install 실패 해결 방법

    맥북 air m1에서 cocoapods 설치까지는 잘 되었지만 Podfile 수정 이후 pod install 과정에서 에러가 발생했습니다. 구글링 후에 m1 환경에서의 문제인 것을 알게 되었고, 같은 환경에서 저와 같은 현상을 겪는 분들이 많을 것 같아 제가 해결한 방법을 글로 남겨두고자 합니다. (해결하는 데 도움을 주신 NoPD 님께 감사드립니다.) Ruby FFI 라이브러리 업데이트 후 재설치 ffi 를 설치할 때 아키텍쳐를 x86_64 로 지정하여 설치해줍니다. (m1은 arm 기반이기 때문에 arch 명령을 수행하면 arm64 라고 나옵니다.) sudo arch -x86_64 gem install ffi 여기서 다시 그대로 pod install을 하면 여전히 오류가 발생합니다. 마찬가지로 pod..

    [Swift 문법 정리] 3. 집단 자료형 - 배열, 집합, 튜플, 딕셔너리

    이번 글은 집단 자료형에 대한 정리입니다. 0. 스위프트의 집단 자료형 배열 (Array) - Index로 구분되는 순서에 따라 리스트 형식의 값을 저장하는 자료형 집합 (Set) - 중복되지 않는 유일한 데이터들이 모인 집합 형태의 자료형 튜플 (Tuple) - 종류에 상관없이 데이터들을 모은 자료형, 수정 및 삭제 불가능 딕셔너리 (Dictionary) - Key와 Value로 연관된 데이터를 순서 없이 모은 자료형 ❗️튜플을 제외한 나머지 자료형은 저장되는 데이터의 타입이 동일해야 합니다. 1. 배열 (Array) 배열에 입력되는 데이터들은 각각의 순서, Index를 가집니다. Index는 정수로 이루어지고 0부터 시작하여 데이터가 추가될 때마다 증가합니다. Index는 순서대로 할당되고, 중간에 ..