본문 바로가기

FRONT-END/iOS39

[xcode] Dark, Light 모드 지정하기 시뮬레이터에서는 잘 나오던 화면이 핸드폰을 연결해 앱으로 열었더니! 아니... 내 글씨들 어디 갔어….? 왜 이래ㅠㅠ.. 하.. 한 땀 한 땀 배경색과 컬러를 지정해줘야 하나 싶어 지정하다가 문득 드는 생각, 핸드폰으로 열면 다크모드로 보이게 처리가 되어있는 건가? 찾아보니 기본 설정으로는 시스템에서 설정한 모드를 따라간다고 한다! 시스템 설정 모드와 관계없이 모드를 고정하고 싶다면 UserInterfaceStyle을 고정하여 이런 현상을 방지할 수 있다고 한다. 그래서 찾아봤더니 방법으로는 2가지가 나왔다. 1. Info.plist에 추가 2. SceneDelegate에 추가해서 light, dark 모드를 지정 방법 1. Info.plist에 추가 이 방법을 찾아보며 알게 된 사실이 하나 있다. 항상.. 2024. 4. 1.
[iOS] Swift API Key 암호화하기 나는 현재 개인 프로젝트에서 오픈 API를 사용해 데이터를 받아오는 과정을 진행 중이다! 근데 이제 API Key를 github에 올리면 문제가 되니까 암호화하는 방법을 다시금 찾아보고 적용하는데 분명 해봤는데 왜 이렇게 오래 걸리지... 뭐였지...? 이게 최선이었나? 하는 마음이 들어 정리하고자 한다! 😂 방법 1. static 변수 활용하기 하나의 파일을 만들어서 사용할 API Key를 static 변수로 묶어 전역적으로 사용하는 방법이다. class보다는 struct, enum을 활용해 사용한다. struct APIKey { static let aApiKey = "aksdlakdl1aksdla" static let bApiKey = "aksdlakdl1aksdla" } // 사용 시 APIKey... 2024. 3. 30.
Swift 심화 학습하기 (프로토콜, Never 타입, #keyPath와 #selector, 메타타입, availability) 프로토콜 Equatable 프로토콜 동일성 비교를 위한 프로토콜이다. 스위프트에서 제공하는 기본타입은 모두 채택하고 있다. 아래 메서드 구현이 해당 프로토콜의 요구사항이다. static func == (lhs: Self, rhs: Self) -> Bool 구조체, 열거형의 경우 Equatable 프로토콜 채택 시 모든 저장 속성이 Equatable 프로토콜을 채택한 타입이라면 비교연산자 메서드가 자동 구현된다. 단, 예외 케이스가 몇 가지 존재한다. 1) 클래스는 인스턴스를 비교하는 항등연산자(===)가 존재하기 때문에 비교연산자(==)는 개발자에게 구현이 위임된다. 2) 열거형의 경우 연관값이 없다면 기본적으로 Equatable, Hashable하기 때문에 Equatable 프로토콜을 채택하지 않아도 .. 2023. 8. 30.
Swift 고급연산자 숫자 리터럴 Swift는 숫자를 표기할 때 추가적으로 알아두면 좋은 몇가지 포인트들이 있다. 1. 2진법/8진법/16진법으로 직접 써 넣을 수 있다 2. 큰 숫자를 읽기 쉽게 하기위해 언더바(_)를 사용해도 된다 var num:Int = 0 num = 0b00011010 num = 0o31 num = 0x19 num = 1_000_000 또한, Swift에서는 Int/UInt 타입을 저장할 때 플랫폼 사양에 따라 다르지만 최근에는 64bit -> 8byte로 저장된다. 이는 Int64 / UInt64로 표기된다. 이를 확인하기 위해 MemoryLayout.size를 입력하면 메모리를 얼마나 사용하는지 알려준다. 오버플로우 오버플로우라는 개념은 값이 넘침을 의미한다. 예를들어 8비트를 담을 수 있는 공간에.. 2023. 8. 29.
Swift 문자열과 문자(String and Character) 아스키코드와 유니코드 둘 다 문자와 문자열을 숫자로 저장하기 위한 체계이다. 아스키코드는 7bit를 사용해 0부터 127까지 매칭되는 것을 정의해 놓고 사용하는 방식이었다. 단, 아스키코드는 영어만 표현이 가능했다. 그 한계를 깨기 위해 유니코드는 한글 등 어떠한 언어 및 기호, 이모지까지의 문자도 표현할 수 있도록 매칭해 놓아 전 세계에서 통일된 방식이다. 영문자 부분은 아스키코드를 포함한다. 인코딩 방법은 8, 16, 32 Bits를 지원한다. UTF-8은 1~4 bytes 가변길이 인코딩으로 웹과 대부분 체계에서 주로 사용된다. 모든 문자열은 개별 인코딩된 유니코드 문자들로 구성된다. Swift에서는 문자열을 저장할 때, 하나의 문자를 유니코드의 스칼라값으로 저장한다. 그리고 언제든지 UTF-8, .. 2023. 8. 28.
Swift 제네릭(Generics) 문법 알아보기 제네릭 문법 형식에 관계없이, 한 번의 구현으로 모든 타입을 처리하여 타입에 유연한 함수를 작성하는 문법이다. 유지보수 및 재사용성이 증가하는 장점이 있다. 함수뿐만 아니라 구조체, 클래스, 열거형도 제네릭으로 일반화가 가능하다. 제네릭 문법이 필요한 이유 타입만 다르고 구현 내용이 동일한 경우, 제네릭이 없다면 타입마다 모든 경우를 다 정의해줘야 한다. 개발자의 일이 늘고, 유지보수 및 재사용성이 어렵게 만들기 때문이다. 제네릭 함수의 정의 func genericsFunc(array: [T]){ // code } 는 타입 파라미터라고 한다. 함수 내부에서 파라미터의 타입이나 리턴형으로 사용된다. 관습적으로 Type의 의미인 T를 사용하기도 하지만, 다른 문자를 사용해도 된다. (형식 이름이기 때문에 U.. 2023. 8. 11.