분류 전체보기

Swift의 do, try, catch 구문은 에러 처리를 위한 구문이다. 보통 아래와 같은 형태를 많이 발견할 수 있다. do { // 예외가 발생할 수 있는 코드를 포함하는 블록 try // 예외가 발생할 수 있는 작업을 호출 } catch { // 예외가 발생했을 때 처리할 코드 } 코드 실습 아래와 같은 코드가 있다고 해보자. fetch 함수는 "Fetched" 를 반환하는 함수이다. 이 함수는 throws 를 통해 에러를 던지는 함수라는 것을 알 수 있다. isActive 를 받아서 false 면 에러를 던진다. enum fetchError: Error { case unknown case network } func fetch(_ isActive: Bool) throws -> String { if..
진수 변환스위프트 안에서 2진수를 10진수로 10진수를 2진수로... 그 외에도 다양한 진수를 쉽게 바꿀 수 있는 함수가 있다. 은연중에 나는 Int("123") 이런식으로 넣어주면 자동으로 Int 로 변환되어 나와서 별 생각 없이 사용하고 있었는데 이것은 사실 10진법으로 전환해주는 로직이였다. 10진수를 n진수로 바꾸기999999를 2진수, 16진수로 바꾸고 싶다면?let v = 999_999print(String(v, radix: 2))// Prints "11110100001000111111"print(String(v, radix: 16))// Prints "f423f"print(String(v, radix: 16, uppercase: true))// Prints "F423F" n진수를 10진수로 ..
커스텀 달력 내가 직접 만든 달력! 기존의 DatePicker 나 UICalendarView 는 제약되어 있는게 너무 많아서 하나하나 커스텀 하기 위해서 직접 달력을 만들었다. 넣은 기능 TabView 로 만들어 page 형태로 드래그가 가능하다. 우측 상단의 버튼을 통해서도 자연스럽게 이동이 가능하다. 오늘 버튼을 누르게 되면 이번달로 이동하면서 오늘이 선택된다. 날짜 선택이 가능하고 다시 선택하면 날짜 선택이 해제된다. 날짜마다 아래쪽에 내가 원하는 View를 넣을 수 있다. Frame 이 일정하다. 어느 달로 가더라도 4주, 5주를 계산하여 높이가 320 으로 일정하다. 코드 CalendarView, Date+Extension 두가지 파일로 구성했다. CalendarView 의 경우 172줄..
· → Xcode
오류 내용Xcode 에서 아래와 같이 멋진 오류를 마주했다... 도저히 무슨 오류인지 알수가 없다. 시뮬레이터 관련 오류인 것 같은데... 해결Product → Scheme 로 가서 Run → Environment Variables → + → OS_ACTIVITY_MODE: disable 해주면 해결된다! 참고 nw_connection_get_connected_socket_block_invoke 19 Connection has no connected handlerThe console of Xcode continue print __nw_connection_get_connected_socket_block_invoke 6 Connection has no connected handlerstackoverflow...
유클리드 호제법이란? 드디어 알고리즘을 공부하다가 처음 마주한 녀석이다. 두 양의 정수 최대공약수를 구하는 방법으로 유클리드 알고리즘이 있다. 아래의 설명이 가장 이해하기 쉬운것 같아서 가져왔다. Swift로 구현하기 최대공약수를 영어로 하면 Greatest Common Divisor 이기 때문에 보통 GCD 라 한다. 결과값이 나올때까지 자기자신을 계속 사용하는 재귀함수를 구현하여 구할 수 있다. a > b 일 경우 a = bq + r 이기 때문에 r 을 a % b 로 구할 수 있어 반복이 가능하다. 만약 여기서 a < b 일 경우에도 b 가 0 이 되지 않기 때문에 결국 a < b 일 경우 gcd(a, b) = gcd(b, a) 로 결국 가기 때문에 고려할 필요가 없다. func gcd(_ a: In..
TabView 를 만들다가 이상한(?) 현상을 발견했다. TabView 를 생성하고, 두번째 페이지부터 시작하게 되면 selection 을 첫번재 페이지로 가게 바꿔줘도 Tab 이 변경되지 않는다! 이게 무슨 말이냐 하면... 이상한 현상 아래와 같은 화면을 만드는 아주 간단한 코드를 만들었다고 해보자. 상단은 페이지를 표시해주고 아래 버튼을 누르면 해당 페이지로 이동하는 코드이다. import SwiftUI struct ContentView: View { @State private var selection = 1 var body: some View { VStack { Text("Page: \(selection)") ZStack { Color(.systemGray3) TabView(selection: $..
User Notification앱을 사용하다보면 아래와 같은 알림을 많이 찾아볼 수 있다. 이것을 앱에서 간단하게 어떻게 구현할 수 있을까?  User Notifications | Apple Developer DocumentationPush user-facing notifications to the user’s device from a server, or generate them locally from your app.developer.apple.com Notification 권한 요청하기우선 Notification 을 사용하려면 권한 요청이 필요하다. NotificationCenter 라는 파일을 만들어주고, 권한을 요청할 것이다. NotificationCenter 클래스를 만들어주고, import U..
앱의 시작시점에 무언가를 해주기 위해서라면 아래의 init() 에 포함시켜 주면 된다. 하지만 앱이 종료되는 시점에 무언가를 해야 하거나 앱의 디테일한 상태 시점에 따라서 무언가를 해줘야 할 때는 어떻게 할까? import SwiftUI @main struct SampleApp: App { init() { print("app start") } var body: some Scene { WindowGroup { ContentView() } } } AppDelegate, SceneDelegate 갑자기 SwiftUI 에서 무슨 Delegate 냐 하는데... 알아두면 유용한 친구들이다... 후에 구조체나 클래스가 자신의 일부 책임을 다른 타입의 인스턴스에게 위임하는 Delegate 패턴에 대해서 알아보도록 하..
Swift librarian
'분류 전체보기' 카테고리의 글 목록 (24 Page)