SWIFT 15

[iOS] SnapKit 라이브러리 사용하기

안녕하세요. 모리스입니다.😀 이번 노트에서는 iOS의 AutoLayout을 쉽게 설정할 수 있도록 해주는 SnapKit 라이브러리에 대해서 기술해 보려 합니다.SnapKit?SnapKit은 iOS, OS X등의 앱 개발에서 AutoLayout을 코드로 구현할 때 사용하는 강력한 라이브러리에요. 기존의 복잡한 NSLayoutConstraint 코드를 더 읽기 쉽고 유지보수가 용이한 레이아웃 코드를 작성할 수 있게 해줘요. 자, 사실 우리에게 중요한건 SnapKit이 무엇이냐보단 어떻게 쓰느냐일 태니.. 본론으로 들어가 볼게요.설치 방법SnapKit 라이브러리 문서에서는 세 가지 설치 방법을 제공해요.CocoaPods터미널에서 프로젝트 디렉토리로 이동pod init 명령어로 Podfile 생성 (Podfi..

iOS 2025.08.26

[Swift] NotificationCenter

안녕하세요. 모리스입니다.😀 이번 노트에서는 데이터를 간단하게 주고 받을 수 있는 NotificationCenter에 대해서 알아보려고한다.먼저 Apple에서는 NotificationCenter에 대해 이렇게 설명하고 있다. 등록된 관찰자에게 정보를 방송할 수 있도록 하는 알림 발송 메커니즘....? 이게 무슨말이냐 역시 직독직해는...쉽게 말해서 유튜브 구독 알림 설정이라고 생각하면 쉽다.내가 좋아하는 유튜버의 새로운 영상을 놓치지 않기위해 알림 설정을 하는 우리(구독자)는 NotificationCenter에서는 관찰자 즉 Observer라고 한다. 그럼 새로운 영상을 업로드해서 우리에게 알림을 보내주는 동작을 NotificationCenter에서는 posting Notification이라고 한다...

swift 2025.08.26

[iOS] URL Scheme으로 지도 앱 연동하기 (TMap, kakaoMap, naver지도)

안녕하세요. 모리스입니다.😀 iOS 지도 앱 연동 (URL Scheme)이번 노트에서는 URL Scheme을 사용하여 한국에서 대표적으로 많이 쓰이는 지도 앱들을 연동하는 방법에 대해 기술하려한다.앱이 설치돼 있으면 앱을 실행 시켜 절정한 위치가 노출되도록 하며, 설치되어 있지 않다면 app store로 이동해 앱 설치를 유도한다.🛠 사전 설정URL Scheme을 사용하려면 Project file > TARGETS > Info 탭에서 Queried URL Schemes 항목을 추가해야 한다.설정하지 않으면 앱이 Scheme을 인식하지 못해 동작하지 않는다.🚗 티맵 연동func openTMap(latitude: Double, longitude: Double) { let urlString = "t..

iOS 2025.08.26

[iOS] Main Thread Checker: UI API called on a background thread: 오류

안녕하세요. 모리스입니다.😀 이번 노트에서는 UI 업데이트 시 한 오류에 관해 작성해보려한다.Main Thread Checker: UI API called on a background thread: 위 오류는 UI를 Main Thread가 아닌 다른 Thread로 접근하려 할때 노출되는 에러 메시지이다.앱의 퍼포먼스를 위해 UI 업데이트 관련 작업은 Main Thread에서 작업을 수행하도록 해야한다.DispatchQueue.main.async {} 구문을 통해 해당 UI작업이 Main Thread에서 구동되도록 해야 다음 에러가 해결된다. 기존 velog에 글을 옮겨오다보니.. 티스토리에서는 구어체로 쓰고 싶었지만 기존엔 문어체로 써놔서..글이뒤죽박죽입니다..!(양해부탁드립니다..😂)

iOS 2025.08.26

[iOS] WKWebView로 JavaScript의 이벤트 받기

안녕하세요. 모리스입니다.😀 회사에서 webView의 특정 버튼을 누르면 앱 UI의 변화를 줘야하는 기능을 구현해야 했다.그중 생각한 것이 webView의 특정 버튼을 눌렀을 때, 이벤트를 받아와 처리해주면 되겠다는 생각을 했다.그래서 프론트개발자에게 버튼을 누르면 이벤트를 앱으로 보내주는 방법을 설명해 해당 함수를 작성해 달라고 요청했고, 나는 front에서 보낸 메시지를 받는 방법을 구현했다.이번 노트에서는 WKWebView가 javascript의 함수를 호출해 메시지를 받아오는 방법에 대해 작성해 보려한다.웹에서 앱으로 보내는 방법 또한 기술하면 좋겠지만.. 아직 front기술에 무지한 터라 앱에서 이벤트를 받는 방법에 대해서만 기술하려한다. 추후 스택이 더 쌓이면 추가 포스트 해보겠다.impor..

iOS 2025.08.26

[swift] abs와 magnitude 차이점

안녕하세요. 모리스입니다.😀 swift에서 절댓값을 구하는 방법으로는 보통 abs를 사용한다. 그렇지만 절댓값 변환 방법에는 abs말고도 magnitude라는 방법이 존재한다. 그렇다면 이 둘의 차이는 무엇일까?let number: Int = -5 위와 같이 음수로 되어진 -5로 정의된 음수가 있다고 보자.let convertWithAbs = abs(number) // Int 5let convertWithMagnitude = number.magnitude // UInt 5 두 값 모두 -5의 절댓값인 5가 출력된다.여기서 abs와 magnitude의 차이점은 자료형에 있다. Int형으로 선언된 값을 abs를 통해 절댓값으로 변환하면 Int 자료형으로 값을 반환한다.반면 magnitude의 경우에는 UI..

swift 2025.08.26

[iOS] SQLite 사용하기

안녕하세요. 모리스입니다.😀기존 velog에 글을 옮겨오다보니.. 티스토리에서는 구어체로 쓰고 싶었지만 기존엔 문어체로 써놔서..글이뒤죽박죽입니다..!(양해부탁드립니다..😂)그럼 시작하겠습니다.... 이번 노트에서는 앱 내에서 database를 사용해 보려한다. 여러 방법이 있지만 sqlite를 사용하여 데이터 CRUD하는 방법을 알아보려 한다.importimport SQLite3sqlite3는 기본 내장 되어있어 import만 해주면 된다.createvar database: OpaquePointer?let tableName: String = "dbTable"func createTable() { let fileURL = try! FileManager.default.url( for: ..

iOS 2025.08.26

[swift]- switch case문 multiple values 사용하기

안녕하세요. 모리스입니다.😀 기존 velog에 글을 옮겨오다보니.. 티스토리에서는 구어체로 쓰고 싶었지만 기존엔 문어체로 써놔서..글이뒤죽박죽입니다..!(양해부탁드립니다..😂) 그럼 시작하겠습니다.... 이번 노트에서는 switch-case문에서 여려 value를 사용하는 법을 작성하려한다.swift에서는 열거 형태의 값들을 switch-case를 통해 비교하고 처리하는 기능이 다른 언어에 비해 강력하다.if-else를 사용하는 방법도 있지만 코드의 가독성이 나빠지고, 코드의 길이 또한 길어지게 된다. 그래서 나는 보통 열거(Enum)형태의 값을 처리할 땐 switch-case문을 사용한다.그럼 기본적인 switch-case문의 구동 방식을 알고 있다는 전제하에 이번 노트를 작성한다.switc..

swift 2025.08.26

[iOS] WebView LocalStorage 사용하기

안녕하세요. 모리스입니다.😀 기존 velog에 글을 옮겨오다보니.. 티스토리에서는 구어체로 쓰고 싶었지만 기존엔 문어체로 써놔서..글이뒤죽박죽입니다..!(양해부탁드립니다..😂) 그럼 시작하겠습니다.... 이번에 회사에서 프로젝트 진행 중 webKit의 webView localStorage에 회원의 이름과 생년월일을 저장하고 이를 웹에서 보여주도록 하는 로직이 필요했다.이번 노트에서는 iOS앱에서 webView를 통해 web의 localStorage에 데이터를 저장하는 방법을 기술하려 한다. 우선 사용법에 들어가기 앞서 web storage에 대해서 알아보자.web storage는 데이터를 서버가 아닌 클라이언트 레벨에 저장하는 기술을 말한다.web storage는 크게 session stora..

iOS 2025.08.26

[swift] Codable - CodingKey

안녕하세요. 모리스입니다.😀기존 velog에 글을 옮겨오다보니.. 티스토리에서는 구어체로 쓰고 싶었지만 기존엔 문어체로 써놔서..글이뒤죽박죽입니다..!(양해부탁드립니다..😂)그럼 시작하겠습니다.... 이번 노트에서는 swift Codable의 CodingKey에 대해 적어보려한다.회사에서 프로젝트를 하던 중 API response로 내려오는 데이터를 가공해야할 때가 많다.그런데 우리 회사의 API response JSON의 key는 Snake Case의 형태를 사용한다.swift프로그래밍에서 Snake Case로 변수명이 사용가능 하긴하지만 보통의 경우엔 Camel Case를 사용하고, 프로그래머의 지극히 주관적으로 선호하는 변수명 형태와 변수명을 줄여써서 협업에 혼란을 야기 또, 공공 API등 이상..

swift 2025.08.26