
사용자의 디바이스 모델명, OS, 앱 버전 상태를 확인하기 위한 방법을 알아보자.이런 정보는 디버깅, 사용자 지원, UI 최적화, 기능 테스트, 마케팅 및 분석등 다양한 목적으로 사용될 수 있어 요구사항에 따라 적절하게 활용하면 된다. 📖 목차1️⃣ 클래스 정의2️⃣ 클래스 사용 예시3️⃣ 주의 사항 1. 클래스 정의 🟡 속성 필요한 데이터인 모델명, 운영체제/앱 버전을 아래와 같이 정의한다. osVersion: 기기 운영체제 이름과 버전deviceModel: 기기 모델 이름appVersion: 앱의 버전 🟡 초기화 메서드 init(): 클래스의 인스턴스를 초기화하고, osVersion, deviceModel, appVersion 속성에 값을 할당한다. 1️⃣ osVersion 초기화 let ..

SwiftUI에서 단위 테스트하는 방법을 알아보자. https://github.com/Jaehwa-Noh/Art-Space-App/tree/main/Swift-Art-Space-App 를 참고하여 만들었다. Art-Space-App/Swift-Art-Space-App at main · Jaehwa-Noh/Art-Space-Apphttps://developer.android.com/codelabs/basic-android-kotlin-compose-art-space#0 - Jaehwa-Noh/Art-Space-Appgithub.com Unit Test란? "하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트" 모듈이 뭐냐? => 애플리케이션에서 동작하는 하나의 기능 또는 메서드 작성한 함수..

iOS 면접 준비를 위한 4탄이다. Swift에서 데이터 관리를 위해 사용되는 UserDefaults, Keychain, Core Data에 대해 알아보자. - 아래 링크 참고 더보기https://github.com/JeaSungLEE/iOSInterviewquestions 질문 리스트1. UserDefaults의 사용 예시와 주의 사항을 설명해주세요.2. Keychain은 어떤 데이터를 저장하는 데 적합한가요?3. Core Data와 SQLite의 차이점은 무엇인가요? UserDefaults "앱 실행 시 지속적으로 key-value 쌍을 저장하는 사용자의 기본 데이터베이스에 대한 인터페이스이다." Info.plist와 유사한 구조로 저장하며, plist에 데이터 저장UserDefaults.plist는..

개발하던 도중 아래와 같은 오류가 나왔다. 같은 파일명 때문에 생긴 에러라고 한다.Showing Recent Issues Multiple commands produce '경로/Xcode/DerivedData/.../FILE NAME' 이 에러를 해결하기 위해 찾아보다가 해결법을 찾았다! 해결 방법 아래와 같이 [Target -> Build Phases -> Compile Sources]에서 오류가 난 파일을 찾아 "-" 한다. 나는 Compile Sources에서 오류가 난 거였지만 다른 항목에서 오류가 난 걸 수도 있으니 어디서 오류 난 건지 찾아서 해당 파일을 "-"하면 된다. 갑자기 오류나서 당황했는데 해결법이 생각보다 쉬워서 좋았다 ㅎㅎ
iOS 면접 준비를 위한 3탄이다. Swift에서 중요한 개념인 클로저에 대해 알아보자. - 아래 링크 참고 더보기https://github.com/JeaSungLEE/iOSInterviewquestions질문 리스트1. Swift에서 클로저(Closure)란 무엇이며, 어떻게 사용하나요?2. 클로저의 캡처 리스트(Capture List)는 어떤 역할을 하나요?3. @escaping 클로저와 non-escaping 클로저의 차이점은 무엇인가요?4. 트레일링 클로저(Trailing Closure) 문법은 언제 사용하면 좋나요?1. 클로저란? 먼저 클로저의 개념에 대해 짚고 가보자! 클로저라고 하면 간단하게 익명함수를 뜻한다고 생각했었다.하지만 자세히 알아보니 func 키워드를 이용해 이름을 붙여주는 함수들..

프로젝트 진행 중 카카오 로그인 보안 강화를 위해 nonce를 추가하기로 결정하였다. Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com 카카오 문서에서도 OpenID Connect 사용 시 ID 토큰 재생 공격을 방지하기 위해 nonce 파라미터 사용을 권장한다고 한다. 이렇게 봤을 때는 왜 사용하는지 이해가 가지 않았다.... 그래서 관련 내용을 더 찾아보았다!! OpenID Connect가 무엇인가? 카카오 로그인 Open ID Connect 지원한다는 공지에서 관련 내용을 확인할 수 있었다. [공지] 카카오 로그인 OpenID Connec..

프로젝트에서 Timer를 사용하는데 Timer가 중복으로 실행되어 실행횟수만큼 초가 플러스 되는 문제가 생겼다. 그 문제는 @State의 잘못된 사용 때문이었다,, 간단한 예시를 들어 설명해보겠다. ✏️ @State란?? @State는 SwiftUI에서 사용되는 속성 래퍼로, 값의 변경을 감지고 뷰를 자동으로 업데이트하는 데 사용된다. @State 속성은 주로 View 구조체 내에서 사용된다고 한다. 왜 그런지는 아래에서 설명하겠다. 1️⃣ View의 내부에서 @State 사용 View 내부에서 @State를 사용하여 currentTimer, isTimerRunning 변수, timer를 선언해보자. @State를 사용할 때 주의할 점으로는 항상 private로 선언하고 가장 상위 뷰에서 @State를 ..

SwiftUI에서 App, Scene, View, WindowGroup등 다양한 키워드가 많은데 이거에 대해 제대로 이해하고 넘어가자 앱을 만들 때 기본적으로 알고 있어야 하는 개념들이기 때문에 확실히 공부하는게 좋을 것 같다! Example이라는 프로젝트를 만들면 자동으로 ExampleApp.swift파일과 ContentView.swift파일이 자동으로 생성된다. ExampleApp.swift를 확인해보면 App을 상속받고 있는 ExampleApp을 확인할 수 있다. ExampleApp.swift import SwiftUI @main struct ExampleApp: App { var body: some Scene { WindowGroup { ContentView() } } } 🟡 App : 앱의 구조..