swift & iOS 63

[swift] ObservableObject 프로토콜과 swiftUI 뷰

출처: https://www.hackingwithswift.com/books/ios-swiftui/sharing-an-observed-object-with-a-new-view Classes that conform to ObservableObject can be used in more than one SwiftUI view, and all of those views will be updated when the published properties of the class change. ObservableObject 프로토콜을 준수하는 클래스라면 여러 개의 SwfitUI 뷰에서 사용할 수 있다. 그리고 그 클래스의 프로퍼티(@Published가 붙은 프로퍼티)에 변동 사항이 있을 때, 이 클래스를 지켜보고 있..

swift & iOS/swift 2022.03.24

[swift] 프로퍼티를 관찰하기 위한 property observer (didSet, willSet)

property observer는 단어 그대로 '프로퍼티 관찰자'이다. 왜 관찰할까? 관찰하고 있던 property에 변동이 생겼을 때 필요한 작업을 하기 위함이다. didSet은 '관찰하고 있던 프로퍼티에 값이 셋팅 되었으니 무언가를 하자!' 이고 willSet은 '관찰하고 있던 프로퍼티에 값이 셋팅 되려고 하니 무언가를 하자!' 이다. did과 will이라는 단어 그대로다. 프로퍼티에 값이 '셋팅된 후'에 무언가를 하느냐와 값이 '셋팅 되려고 할 때' 무언가를 하느냐다. 그러면 '무엇'을 하면 좋을까? 아래는 스위프트 공식 문서의 Properties 챕터 중 property observer에 관한 샘플 코드다. // 출처: https://docs.swift.org/swift-book/LanguageG..

swift & iOS/swift 2022.03.24

[swift] 시간, 날짜 출력하기 ( .dateTime, Date.now.formatted(...) )

프로그래밍에서 어떤 언어를 사용하던 시간, 날짜 다루는 것은 정말 까다롭다. Swift도 마찬가지인데, 자바스크립트 였으면 moment 같은 라이브러리를 사용했을 법한 것들을 iOS가 어느 정도 처리해주는 것 같다. Text(Date.now, format: .dateTime.day().month().year()) // 2022년 3월 15일 Text(Date.now, format: .dateTime.hour().minute()) // 오전 11:48 Text(Date.now.formatted(date: .long, time: .shortened)) // 2022년 3월 15일 오전 11:48 Text(Date.now.formatted(date: .long, time: .omitted)) // 2022년 ..

swift & iOS/swift 2022.03.15

xcode 단축키

프로젝트 실행하기: cmd + R 네비게이터(swift 파일 목록 보여주는 맨 왼쪽 패널): cmd + 0 네비게이터 내의 탭을 하나씩 이동하려면 cmd + 1, cmd + 2, cmd + 3 ... 제일 오른쪽 패널: cmd + option + 0 제일 오른쪽 패널에서도 탭끼리 이동하려면 cmd + option + 1, cmd + option + 2, ... 하단 콘솔창: cmd + shift + Y 어시스턴스 에디터: ctrl + option + cmd + enter 파일 찾아 열기: cmd + shift + O (open) 코드 정렬: ctrl + I (indent)

[swift] static 키워드: static이 붙은 프로퍼티와 메소드

아래 swift 공식 문서들을 읽고 정리한 내용임. https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID264 Properties — The Swift Programming Language (Swift 5.6) Properties Properties associate values with a particular class, structure, or enumeration. Stored properties store constant and variable values as part of an instance, whereas computed properties calculate (rather than store) a value. Computed..

swift & iOS/swift 2022.02.14

[ios 개발] 컬럼이 2개인 UIPickerView 구현하기

아래 사진처럼 UIPickerView의 덩어리를 컬럼 또는 컴포넌트라고 부른다. 그래서 아래의 피커뷰는 컬럼(컴포넌트)이 2개인 피커뷰이다. 피커뷰를 사용하려면 컬럼의 갯수에 상관없이 반드시 UIPickerViewDataSource, UIPickerViewDelegate 라는 프로토콜을 채택해야 한다. UIPickerViewDataSource에는 피커뷰의 컬럼(컴포넌트)을 몇 개로 할 것인지와 각 컬럼에는 몇 줄이나 필요한지 설정할 수 있도록 도와주는 메소드들이 있다. UIPickerViewDelegate에는 각 컴포넌트가 가지고 있는 줄에 들어갈 컨텐츠(문자열이거나 UIView), 줄의 너비, 높이를 설정할 수 있는 메소드들이 있고 특히 피커뷰에서 스크롤을 돌려서 어떤 한 데이터를 선택하면 그 데이터의..

[ios 개발] xcode에서 code snippet 코드 스니펫 만들기

xcode에서 class나 struct 같은 키워드를 입력하기 시작하면 글자 밑에 작은 창이 뜨면서 선택할 수 있는 것들이 보인다. 잘 골라서 선택하면 굳이 스펠링을 다 적지 않아도 내가 원하는 것을 선택하면서 빠르게 프로그램을 작성할 수 있게 도와준다. xcode에 기본적으로 내장되어 있는 것들 외에 내가 특별히 자주 쓰는 코드 덩어리가 있다면 코드 스니펫을 직접 만들어 xcode에 등록할 수 있다. 1. 재사용할 코드를 블록 지정한 뒤에 오른쪽 마우스 - Create Code Snippet 선택 2. 새롭게 뜨는 창에서 아래와 같이 필요한 부분을 기입한다. 코드 내부에 파랗게 보이는 부분은 placeholder인데 이렇게 입력하면 '내용' 글자가 파랗게 변하면서 placeholder가 된다. 3. 만..