Keychain애플에서 사용자 데이터를 안전하게 저장할 수 있도록 제공하는 암호화된 데이터베이스Keychain Service API를 사용하면 키체인 안에 사용자 데이터를 저장할 수 있습니다.안전하게 저장해야 하는 작은 데이터를 저장할 때 사용 - ex) 비밀번호, 암호키, 인증키, 메모 등SandBox 밖에 데이터가 저장되기 때문에 앱을 삭제해도 데이터가 남아있음디바이스가 Lock/Unlock되면 키체인도 같이 Lock/Unlock됨Secure Enclave라는 암호화 기능을 사용하는 하드웨어에서 키체인 데이터를 관리함Keychain Sharing을 통해 동일한 개발자에 속한 서로 다른 앱 간 키체인 공유가 가능 📌 UserDefaults와 비교Keychain은 UserDefaults와 대체로 유사..
전체 글
공부하거나 삽질한 내용을 정리하는 블로그입니다.사이드 프로젝트 개발을 하면서 문자열 String이 숫자를 포함하고 있는지 여부를 알고 싶었습니다. 이전 글에서 실시간 버스의 도착 정보에 대한 메세지가 총 4가지 종류로 제공된다고 했습니다.1️⃣ "곧 도착"2️⃣ "00분00초후[0번째 전]"3️⃣ "운행종료"4️⃣ "출발대기"그리고 각각의 응답 메세지 형식에 따라서 아래와 같은 enum 타입으로 분류해준다고 했었죠.enum ArrivalStatus: Comparable { case arriveSoon // 곧 도착 case coming(remainingSecond: Int) // 운행중(남은시간(초)) case waiting // 출발대기 case finished // 운행종료 case unknown // 알 수 없음} 그..
사이드 프로젝트를 진행하면서대중교통을 통해 갈 수 있는 경로들을 보여주면서, 각각의 경로에 대한 실시간 도착정보가 제공되도록 하려고 했습니다.이를 위해 지하철과 버스의 실시간 도착 정보 API를 사용하게 되었고, 각각의 API를 통해 도착까지 남은 시간을 초 단위의 Int값으로 받아와서 앱 상에서는 남은 시간을 실시간으로 카운트하며 표시해주려고 했습니다.그렇기 때문에 도착 정보에 대한 데이터 타입은 단순하게 남은 시간(초)를 나타내는 Int값이었습니다. 지하철 도착 정보 API의 경우 도착 정보로 도착까지 남은 시간을 초 단위의 숫자값으로 제공했기 때문에 Int타입으로 쉽게 변환하여 사용할 수 있었습니다. 하지만 버스 도착 정보 API는 조금 달랐습니다.해당 API의 응답 데이터에서 도착까지 얼마나 남았..
SwiftUI로 사이드 프로젝트 개발을 하다가 아래 사진처럼 TextField에 입력한 텍스트를 한번에 지울 수 있는 Clear Button을 추가하려고 했습니다. 애플의 HIG 문서에서는 Text fields 사용 시, "사람들이 입력을 지울 수 있도록 텍스트 필드의 마지막 끝에 지우기 버튼을 표시하세요." 라고 하면서 Clear Button의 추가를 권장하고 있습니다. 그렇기 때문에 UIKit의 UITextField에는 clear button 설정과 관련된 옵션이 기본적으로 제공되었고, SwiftUI의 TextField에도 당연히 clear button 관련 옵션이 있을 거라 생각했습니다. 하지만 찾아보니 SwiftUI에서는 기본적으로 제공되는 clear button이 없었습니다. 검색을 해보면 대체..
에러 설명Xcode로 개발을 하면서 Info.plist 파일의 위치를 옮기게 되면, 빌드 시에 아래와 같은 오류가 발생합니다. Build input file cannot be found: '~/Info.plist'. Did you forget to declare this file as an output of a script phase or custom build rule which produces it? 👉 빌드 인풋 파일로 Info.plist 파일이 필요한데 찾을 수 없다는 뜻입니다. 이는 해당 빌드 타겟에 지정된 Info.plist의 경로는 그대로인데 실제 Info.plist 파일의 경로는 달라서 이를 찾지 못하기 때문에 발생하는 문제입니다. 저같은 경우는 프로젝트 내부에 Resources 폴더를 ..
사이드 프로젝트를 진행하면서 Core Location을 사용해 현재 위치를 불러오는 기능을 구현하고, 이에 대한 테스트 코드를 작성하려고 했습니다. LocationService 클래스 정의위치 서비스 관련 동작을 처리하기 위해 LocationService라는 이름의 클래스를 정의해주었습니다.해당 클래스는 Core Location의 CLLocationManager 인스턴스를 활용하여 위치 서비스 관련 메서드를 호출하고, CLLocationManagerDelegate를 채택하여 위치 서비스의 결과를 받아서 처리할 수 있습니다. 해당 프로젝트에서 필요한 동작은 현재 위치의 위도,경도값을 받아오는 것 하나 뿐이기 때문에 간단하게 필요한 내용을 아래와 같이 작성해주었습니다.import CoreLocation// ..
애플에서는 위치 관련 서비스를 위한 Core Location 이라는 프레임워크를 제공합니다. Core Location 프레임워크를 사용하여 사용자의 위치 데이터를 받고 처리하는 방법을 알아보겠습니다. Core Location이란? Core Location을 사용하면 디바이스의 내장 수신 장치들을 활용하여 위치 데이터를 수집하고 처리할 수 있습니다. CLLocationManager Core Location 서비스를 구성-시작-종료 하기 위해서는 CLLocationManager 클래스 인스턴스를 사용해줍니다. CLLocationManager는 아래와 같은 기능들을 지원하는데, 이번 글에서 주로 필요한 내용은 위치 변화 추적(Standard and significant location updates)이 되겠습..
인터넷 유머에 익숙한 사람, 특히 외국 밈에 익숙한 사람이라면 아래와 같은 형식의 짤을 많이 봤을 것입니다.대부분의 외국 밈 짤에서는 저렇게 두꺼운 흰색 글자에 검은색 테두리를 갖는 폰트가 사용됩니다. 당장 구글에 'meme'이라고만 검색해도 그 폰트를 잔뜩 볼 수 있습니다. 토이 프로젝트를 하나 만들면서 이 폰트를 사용하고 싶어졌습니다.해당 프로젝트는 SwiftUI로 진행할 것이기 때문에 SwiftUI로 이 폰트를 사용하는 법을 알아보겠습니다. 그래서 이 폰트가 뭔가요?외국 밈에서 많이 사용하는 이 폰트의 이름은 'Impact(임팩트)'라고 합니다.인터넷 밈에 자주 사용되기 때문에 생겨난지 얼마 되지 않은 폰트라고 생각될 수도 있는데, 1965년에 생겨난 매우 근본 있는 폰트라고 합니다.사진 위..
M1 맥북 + Xcode 15 환경에서 SwiftLint를 적용해보면서 겪은 문제에 대해 정리한 글입니다. 아래 설명된 오류처리와 함께 추가적인 설정과 SwiftLint 설치 및 적용 과정도 정리한 내용을 보고 싶다면 여기를 참고해주세요 SwiftLint 적용하기 | Notion 1. SwiftLint 설치 healthy-degree-cc2.notion.site ‼️ 만약 M1 이상 맥북 + Xcode 15 이상 버전의 개발 환경이라면 아래에서 소개드릴 2가지 문제를 반드시 해결해주어야 SwiftLint를 정상적으로 사용할 수 있는 것 같습니다. 🚧 Homebrew로 설치 시 Apple Silicon에서 SwiftLint를 찾지 못하는 문제 Apple Silicon(M1, M2 등)에서 Homebrew를..
공식 문서https://developer.apple.com/documentation/swift/customstringconvertible CustomStringConvertible | Apple Developer DocumentationA type with a customized textual representation.developer.apple.com Swift의 CustomStringConvertible 프로토콜은 커스텀된 텍스트 표현을 사용할 수 있도록 해주는 프로토콜임 개요CustomStringConvertible 프로토콜을 준수하는 타입은 인스턴스를 문자열로 변환할 때 그 타입만의 자체 표현을 제공할 수 있다.만약 CustomStringConvertible 프로토콜을 준수하는 인스턴스가 Str..