Swift 76

[iOS] 안전한 데이터 저장, Keychain 사용하기

이번 포스트에서는 Keychain을 사용하여 안전하게 데이터를 저장하고 불러오는 방법에 대해 살펴보고자 합니다. Keychain은 디바이스 안에 암호화된 데이터 저장 공간을 의미합니다. 사용자는 암호화된 공간에 데이터를 안전하게 보관할 수 있습니다. Keychain에 저장할 수 있는 데이터는 다양한 데이터가 포함될 수 있습니다. 사용자 계정 정보를 비롯하여 결제 지불 정보, 사용자 개인 정보 등 민감한 데이터를 모두 저장할 수 있습니다. 현재까지 Keychain 영역이 외부 침입자에 의해 뚫렸다는 소식이 없었을 만큼 안전한 공간입니다. Keychain Service는 Keychain Service API를 통해 데이터를 암호화할 후 Keychain에 저장하게 됩니다. 아래 그림을 살펴보면 이해에 도움이 ..

클라이언트 2020.08.17

[iOS] Swift UI Group, View 속성 사용해보기

이번 포스트에서는 Swift UI에서 제공하는 기본적인 View 속성과 Container의 자식 View 개수 제한을 해결해보는 내용에 대해 살펴보도록 하겠습니다. Swift UI View Stack Swift UI는 VStack, HStack, ZStack이라는 3가지 Stack Layout View를 제공하고 있습니다. VStack은 수직으로 View를 배치하는 레이아웃이며 HStack은 View를 가로로 배치하는 레이아웃, ZStack은 View를 중첩이 되도록 배치하는 레이아웃을 의미합니다. 예를 들어, 다음과 같이 VStack에 3개의 Text가 있다면 세로로 3개의 View가 배치되는 것입니다. struct ContentView: View { var body: some View { VStack..

클라이언트 2020.03.28

[iOS] Swift UI 시작하기

이번 포스트에서는 Apple에서 새로 발표한 Swift UI에 대해 살펴보도록 하겠습니다. Apple 공식 문서에 써있는 Swift UI 소개 글귀를 발췌하였습니다. SwiftUI는 Swift의 성능을 바탕으로 모든 Apple 플랫폼에서 사용자 인터페이스를 구축할 수 있는 혁신적이고 간소화된 방법입니다. 단 하나의 도구 구성 및 API를 통해 모든 Apple 기기에서 사용할 수 있는 사용자 인터페이스를 구축합니다. 읽기 쉽고 작성하기 편한 선언적 Swift 구문을 통해 SwiftUI는 새로운 Xcode 디자인 도구와 매끄럽게 연동되면서 코드와 디자인이 완벽하게 동기화되도록 합니다. 또한 유동적 글자 크기 조절, 다크 모드, 현지화 및 손쉬운 사용을 자동 지원하므로 SwiftUI 코딩 첫 줄부터 가장 강력..

클라이언트 2020.03.28

[Swift] Codable을 사용하여 JSON Encode/Decode 하기

이번 포스트에서는 Swift에서 제공하는 Codable을 사용하여 JSON을 Encode하고 Decode하도록 하겠습니다. Codable은 Swift 4.x부터 지원하는 Protocol입니다. 공식 문서에 따르면 Codable은 A type that can convert itself into and out of an external representation." 자기 자신을 외부 표현으로 변환(Encode)하거나 외부 표현으로부터 변환(Decode)할 수 있는 타입이라고 합니다. 즉, Codable은 Encodable과 Decodable을 합친 것인데, 각각 정의를 살펴보면 아래와 같습니다. typealias Codable = Decodable & Encodable Codable은 Protocol 이기 ..

[iOS] 카카오 주소 API로 주소 가져오기

이번 포스트에서는 카카오 주소 검색 API로 주소를 검색하는 기능을 만들어보도록 하겠습니다. 보통 주소 검색은 다음 우편 번호 검색을 많이 사용하거나 하는데 네이티브 앱에서 해당 기능을 사용하려면 php파일을 호스팅 하거나 해야 해서 약간은 귀찮은 작업이 생길 수 있습니다. 그래서 네이티브로 직접 구현하는 것이 더 많은 기능을 손쉽게 제공할 수 있습니다. 지금부터 살펴보도록 하겠습니다. 카카오 주소 검색 API는 REST API로 개발자 센터에서 앱을 등록한 후 KEY를 발급받아 사용해야 합니다. 앱 등록 후 KEY 발급받기 https://developers.kakao.com/ Kakao Developers_ 더 나은 세상을 꿈꾸고 그것을 현실로 만드는 이를 위하여 카카오에서 앱 개발 플랫폼 서비스를 시..

카테고리 없음 2020.03.16

[iOS] View를 Image로 Rendering하기

이번 포스트에서는 UIView를 Image로 Rendering하여 앨범에 저장하는 방법에 대해 살펴보도록 하겠습니다. 권한 추가 우선 앨범에 접근을 해야 하므로 접근 권한을 요청하여야 합니다. info.plist에 아래와 같이 "App Transport Security~", "Allow Arbitrary Loads = YES"항목을 추가해주시기 바랍니다. Storyboard 생성 및 레이아웃 구성 Sample로 뷰를 스토리보드에 배치하도록 합니다. 저는 중첩된 View도 이미지로 변환할 수 있는지 검증하기 위하여 2개의 View를 겹쳐 구성하였으며 각 View에는 다른 배경색상을 적용하였습니다. Image Rendering하고 앨범에 저장하기 실제로 View를 이미지로 렌더링하고 앨범에 저장하는 기능을 ..

클라이언트 2020.03.15

[Swift] Delegate 패턴 사용하기

이번 포스트에서는 Delegate 패턴을 사용하여 View와 View Controller 간의 이벤트 전달 및 데이터 전달 방법에 대해 살펴보겠습니다. Delegate 패턴은 Protocol을 사용하여 구현하게 됩니다. Protocol에 대해 간단하게 정리해보자면, 사람이라는 Protocol을 정의했다고 가정해봅시다. protocol Person { func sayHello() func eat() } 위 예시 코드를 보면 인사를 하다와 먹다 라는 두 function이 정의되어 있습니다. 그러면 저 Person이라는 Protocol을 구현하는 Class를 하나 만들어 보겠습니다. class DennyKim: Person { func sayHello() { print("Hello My name is den..

[iOS] UINavigation Controller에서의 Status Bar Tint Color 해결

이번 포스트에서는 UINavigation Controller를 사용하는 경우에 Status Bar의 Style이 제대로 적용되지 않는 문제에 대해 정리해보도록 하겠습니다. 보통 View Controller에서 StatusBar Style을 설정하는 메소드는 override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } 와 같이 사용할 수 있었는데요, iOS 13.0부터는 이 방법이 절대적인 방법이 아니게 되었습니다. iOS 13.0 이상에서 UINaviation Controller를 사용할 경우에는 위와 같이 설정한 lightContent가 적용이 되다가, Navigation Controller로 인해 새로 변경되는 현상을 ..

클라이언트 2020.03.08

[watchOS] Apple Watch Life Cycle

이번 포스트에서는 Apple Watch의 Life Cycle에 대해 알아보도록 하겠습니다. Watch OS Extension의 상태 Watch OS Extension의 상태는 크게 5가지가 있습니다. Not Running, In Active, Active, Background, Suspended Not Running Watch App이 실행되고 있지 않은 상태, 사용자가 Watch App을 종료했거나 시스템이 App을 종료한 상태 In Active Watch App이 현재 Foreground에서 실행 중인 상태이나 어떠한 제어나 제스쳐가 발생하지 않고 있는 상태 이 상태에서 Watch App은 별도의 다른 코드를 실행하고 있을 수도 있습니다. 새로 시작된 App이 일반적으로 Active 상태로 전환될 때..

클라이언트 2020.03.03

[watchOS] iPhone과 애플 워치 데이터 주고 받기

이번 포스트에서는 아이폰과 애플 워치 간 데이터를 주고 받는 방법에 대해 살펴보도록 하겠습니다. 애플 워치의 경우 단독으로 동작하는 앱도 있지만 대부분은 Host App과 통신하면서 동작하는 App이 많습니다. 심박수, 걸음 수 등 각종 건강 정보 역시 Host App (iPhone)으로 데이터를 전송하면서 동작합니다. 이렇듯 애플 워치와 아이폰 간 데이터를 주고 받는 방법을 아는 것은 굉장히 중요합니다. XCode 프로젝트 생성하기 iOS App with Watch App 을 선택하여 아이폰과 함께 동작하는 (독립적이지 않은) App을 개발하도록 선택해줍니다. 프로젝트 이름을 적절하게 입력해주시고 기타 설정은 기본 값을 유지하도록 합니다. 레이아웃 구성하기 프로젝트 생성이 완료되었다면 레이아웃을 구성할..

클라이언트 2020.03.02