iOS/Swift 24

Swift) Info.plist 현지화(Localized)

Swift는 앱 내 성공, 에러 메세지에 대해서 Localized 가능합니다. 또한 권한 설정에 대해서 알아 봅시다.순서Localized 설정InfoPlist.string 파일 만들기Info.plist 권한 설정 Key값 확인InfoPlist.string 문구 추가적용1. Localized 설정PROJECT 설정 -> Localizations -> 원하는 언어 선택2. infoPlist.string 파일 만들기File -> string 파일형식 검색 -> 파일명 InfoPlist로 만듬3. Info.plist 권한 설정 Key 값 확인Info.plist 우클릭 -> Open As -> Source Code -> key string값 확인앨범 선택인 경우 NSPhotoLibraryUsageDescripti..

iOS/Swift 2024.07.16

Swift) UUID + KeyChain

Device uuid를 계속 고정할 수 있게 할 수 있다. 그러나 uuid는 앱을 삭제 후 재 실행하면 변경된다.iOS5 이전에는 디바이스마다 고유 값 udid를 제공했었는데 앱마다 udid가 같다는 이유로 더 이상 지원하지 않는다.다만 공장 초기화 시에는 변경된다.사용을 위해 keychain 사용자 설정을 해야한다고 되어 있는데, 필자는 다른 셋팅 없이 되었다.라이브러리 사용을 2가지만 하면된다.라이브러리 다운로드코드 2줄라이브러리 다운로드주소: https://github.com/taka0125/TAKUUIDpod, spm 둘다 지원한다.코드TAKUUIDStorage.sharedInstance().migrate() uuidInTheKeychain.text = TAKUUIDStorage.sharedIn..

iOS/Swift 2024.05.31

Swift) Protocol을 이용한 코드 개선

Protocol으로 반복되는 코드를 개선해 봅시다.extension 활용예시ex) protocol 코드protocol GameProcess: AnyObject { func start() func end()}extension GameProcess { func start() { print("Start Game") } func end() { print("End Game") }}먼저 프로토콜을 사용해서 기능을 정의합니다.그리고 extension으로 기능에 대한 상세 구현 합니다.수정사항 xex) 예시코드 1class WarGame: GameProcess { func go() { start() }}let warGame = Wa..

iOS/Swift 2024.05.24

Swift) Continuations 활용

Continuations에는 withCheckedContinuation, withCheckedThrowingContinuation 가 있습니다. 둘 중에 차이는 에러를 return 하는지 안하는지 차이가 있습니다.Continuations는 비동기 코드, Closure형태를 async로 변경할때 많이 사용합니다.단, 주의사항이 있습니다.한번에 continue를 두 번이상 호출하면 안되고, resume을 호출하면 안됩니다. 그렇게 되면 Task가 무기한 일시 중단 상태로 되어버립니다.(앱이 멈추고 결국엔 강제종료가 됩니다.)Closure를 async로 변경하는 예시 코드에러 xClosurefunc requestWeclomeMessage(completion: ((String) -> Void)) { compl..

iOS/Swift 2024.05.20

클로저 (Closures) - 클로저 표현

클로저 (Closure)는 코드블럭으로 C와 Objective-C의 블럭(blocks)과 다른 언어의 람다(lambdas)와 비슷 합니다. 클로저는 어떤 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다. Swift는 이 캡쳐와 관련된 모든 메모리를 알아서 처리 합니다. 캡처의 개념에 대해 익숙하지 않다고 걱정하지 않으셔도 됩니다. 값 캡쳐는 아래에서 자세히 설명해 두었습니다. 전역 함수(global functions)와 중첩 함수(nested function)은 실제 클로저의 특별한 경우 입니다. 클로저는 다음 세 가지 형태 중 하나를 갖습니다. 전역 함수: 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 중첩 함수: 이름이 있고 관련된 함수로 부터 캡쳐할 수 있는 클로저 클로저 표현: 경량..

iOS/Swift 2023.04.25

콜렉션 타입(Collection Types) - 셋(Sets)

셋(Sets) set 형태로 저장되기 위해서는 반드시 타입이 hashable이어야만 합니다. Swift에서 String, Int, Double, Bool 같은 기본 타입은 기본적으로 hashable 입니다. Swift에서 Set 타입은 Set으로 선언 합니다. 빈 Set생성 var letters = Set() print(letters.count) // 0 letters.insert("a") letters = [] 배열 리터럴을 이용한 Set생성 var favoriteGeneres: Set = ["Rock", "Classical", "Hip hop"] Swift의 타입추론으로 아래와 같이 선언도 가능 합니다. var facoriteGeneres: Set = ["Rock", "Classical", "Hip ..

iOS/Swift 2023.04.21

콜렉션 타입(Collection Types) - Array

Swift에서는 콜렉션 타입으로 Array, Set, Dictionary 세 가지를 지원 합니다. 콜렉션의 변경 Array, set, Dictionary를 변수(var)에 할당하면 이 콜렉션은 변경 가능하고 상수(let)에 할당하면 변경 불가능 합니다. 배열(Array) 배열의 축약형 문법 배열 타입은 Array로 적을 수 있는데 축약형으로 [Element]형태로 사용할 수도 있습니다. 빈 배열의 생성 아래와 같이 Int형 빈 배열을 생성할 수 있습니다. var someInts = [Int]() someInts.append(3) // 배열에 3을 추가 했습니다. someInts = [] // 배열을 비웠습니다. 배열의 아이템 타입은 그대로 Int로 유지 됩니다. 기본값으로 빈 배열 생성 repeating..

iOS/Swift 2023.04.19

Swift) 코드로 UITableView 구현하기

Swift) 코드로 UITableView 구현하기 코드로 UITableView를 구현해 봅시다. TableView란?? A view that presents data using rows in a single column. -> "단일 열의 행을 사용하여 데이터를 표시하는 보기 입니다" 라고 공식문서에서 소개해주네요 구현된 TableView를 보자면 아래처럼 각각의 표처럼 View가 되어 있고 하나의 칸마다 데이터가 들어간 것을 볼 수 있네요. 또한 관련 행을 섹션으로 그룹화하여 콘텐츠를 관리하거나 탐색할 수 있습니다. 구성 UITableView는 테이블의 기본 모양을 관리합니다. 하지만 앱은 실제 컨텐츠를 표시하는 각각의 Cell(UITableViewCell)을 제공합니다. 아래의 셀 구성은 아래 처럼 ..

iOS/Swift 2023.02.04

Swift) NumberFomatter

Swift) NumberFomatter NumberFormatter란? 애플 공식문서에서는 숫자 값과 해당 텍스트 표현 간에 변환하는 포맷터라고 소개하고 있습니다. 조금 더 살펴보는게 좋을 것 같네요. OverView에서 이제 NumberFormatter의 인스턴스는 NSNumber 객체를 포함하는 셀의 텍스트 표현을 포맷하고 숫자 값의 텍스트 표현을 NSNumber 객체로 변환합니다. -> 여기서 NSNumber란 기본 스칼라 숫자 값에 대한 객체 래퍼라고 되어 있는데 추후에 자세히 알아봐야 겠네요. 계속해서 NSNumber는 표현에는 정수, 실수 및 복식이 포함되고, float 및 double은 지정된 소수점 위치로 형식화할 수 있습니다. NumberFormatter 객체는 셀이 허용할 수 있는 숫자..

iOS/Swift 2022.12.02