IOS 14

[SwiftUI/화면이동] navigationDestination 바르게 사용하기

#문제 NavigationLink(destination: , isActive: )이 iOS16+ deprecated되어서 더 이상 사용할 수 없었습니다. 그래서 다른 메서드인 navigationDestination 사용하였는데, 화면이 전환되지 않았습니다. NavigationLink(destination: , isActive: ) // deprecated! #오류 처음에 코드를 짰을 때 navigationDestination이 작동하지 않아서 다음 화면으로 넘어가지 않았습니다. struct OpeningView: View { @State private var moveToScoreBoard = false @State private var moveToLoadRecentGame = false var body:..

Apple/SwiftUI 2024.01.02

1인 앱개발자의 iOS개발 일지 - 상 -

기획부터 개발까지 하는 게 쉽지는 않지만 재밌고 뿌듯하다. 세상에 내가 생각한 아이디어가 나온다는 건 감동적인 일이다. - 와이어 프레임 꼭 짜야 하는 이유 디자이너님께 내 아이디어를 전달하기 위해서 와이어프레임을 피그마로 짰는데 만들고 보니 개발에 필수적이라는 것을 느꼈다. 머리속에는 있지만 구체화 시키지 않아서 화면을 만들 때마다 생각을 하면서 만들어야 했다. 속도가 너무 더뎠는데, 와이어프레임을 보고 메모한 것을 보니 바로바로 적용할 수 있어서 속도가 났다. 아이폰 실물 모델로 UX 표현해서 구체화 하는 게 너무너무 중요하다는 걸 깨달았다. - 예산을 아끼자. 한국에서 제공하는 고객 문의용 서비스는 유료여서, 외국에서 제공하는 사이트를 보니 웹에 연결해서 편하게 고객 대응을 할 수 있는 서비스를 찾..

[SwiftUI 특징] 선언적 구문, 데이터 주도적이다.

선언적 구문 SwiftUI를 사용하면 레이아웃이 실제로 구축되는 방식의 복잡함에 대해 고민할 필요 없이 사용자 인터페이스가 어떤 모양을 이어야 하는지를 선언하는 방식으로 레이아웃을 생성할 수 있다. 이 과정에는 기본적으로 레이아웃에 포함될 컴포넌트들을 선언하고, 그것의 레이아웃 매니저 종류(VStack, HStack, Form, List 등)를 명시하고, 속성(버튼의 텍스트, 색상, 호출될 메서드)을 설정하기 위해 수정자(modifier)를 사용한다. 이렇게 선언하면 레이아웃의 위치와 컨스트레인트, 렌더링 방법에 대한 세부사항은 SwiftUI가 자동으로 처리한다. 데이터 주도적 SwiftUI는 앱의 데이터 모델과 사용자 인터페이스 컴포넌트, 그리고 기능을 제공하는 로직을 binding하는 여러 방법으로 ..

Apple/SwiftUI 2023.10.27

[iOS앱출시] 첫 출시 기록, 강수예보 알림 <올랑말랑> 후기

기상청 정보를 받아 강수예보를 알려주는 앱 ❓ 왜 이 앱을 출시하게 되었나요 오늘 비가 와서 우산을 챙겨야 할지 말지, 날씨 앱을 열어보는게 귀찮았습니다. 강수확률이 일정확률(%)을 넘으면 우산을 챙기라는 알림을 아침에 받으면 편하지 않을까?라는 생각으로 앱을 기획하게 되었습니다. ⛅️ 앱의 주요 기능 * 사용자의 위치 기반으로 한 눈에 볼 수 있는 시간별 강수 확률 * 원하는 강수확률을 지정하면 아침 7시에 알림이 옵니다. * 앱에서 사용자가 원하는 귀여운 캐릭터를 선택할 수 있습니다. 🌈 사용 기술 TabMan 스플래쉬에서 메인으로 넘길 때 탭맨을 이용하여 탭뷰컨트롤러에서 탭을 관리할 수 있습니다. Almofire GET, POST 등 다양한 HTTP 요청을 쉽게 보낼 수 있어, API 호출을 편히..

[iOS/Swift] 오류 처리 error

💻 오류처리 방식 error를 enum 타입으로 만들 수 있다. 에러를 체크하거나 던지는 메서드를 만들 수 있다 일반적으로 반환하지 않는 메서드는 끝에 thorw를 써준다 에러를 던지게 되면 do catch라는 블록에서 작업을 한다. 에러가 들어온다고 하더라도 에러에 대한 처리를 하지 않겠다면 try? 써준다. (이거 너무 어려워요ㅠ..) 에러를 던지는 메서드에서 반환형을 가지고 있다면 데이터 반환형 앞에 thorw를 써준다. //오류 정의 enum MismatchError: Error { case countMismatch case colorMismatch case soundMismatch } //오류 던지기(throws) 함수 생성 func guessSound(name userInput: String)..

Apple/Swift 2022.11.30

[iOS/Swift] assert와 guard문

🐹 assert 사전적 의미는 '주장하다', '단언하다' 의미인데 말하다는 느낌에서 더 강한 느낌을 주는 단어다. 💻 assert문의 특징: 디버깅 모드에서만 동작하는 함수, 조건을 검증하기 위하여 사용한다. 디버깅 모드에서만 동작하는 함수로, 조건을 검증하기 위하여 사용한다. 배포된 앱에서는 동작하지 않는다는 특징이 있다. assert문을 사용할 때는 아래와 같은 문법으로 사용한다.👇 assert(조건, "조건에 맞지 않을 때 오류문구로 나타낼 메시지 입력") 🔨assert문 코드 var name: String? name = "haru" assert(name != nil, "nil!") assert 뒤의 조건에 name이라는 변수에 nil이 아닐 경우 통과하고, nil이면 "nil!"이라는 오류가 출력..

Apple/Swift 2022.11.30

[iOS/Swift] 참조 타입과 값 타임(+메모리 전달 방식)

👀 설명에 들어가기 전에 아래의 작업 순서를 먼저 보자. 1. 변수와 상수들의 모음 = 데이터 덩어리 = class/struct 2. model = 변수와 상수 같은 값들을 큰 상자 안에 묶는다. 3. 상자로 묶는 방식 중 class 방식과 struct 방식이 있다. 4. 이 상자를 메모리에 올려야한다. 💻 참조타입 Class vs 값 타입 Struct, Enum 🔧 Class의 특징 단일 상속이 된다. 참조 타입이다. 클래스는 생성자를 만들어야 한다. 클래스는 값이 전달될 때 복사되는 것이 아니라, 동일한 기존 인스턴스에 대한 '참조'가 사용된다. 즉 두 장의 종이가 서로 연결된다. 한쪽이 변경되면 나머지 한쪽도 변경되는 방식. 🔧 Struct와 Enum의 특징 상속이 불가하다. 값 타입이다. 열거형 ..

Apple/Swift 2022.11.30

[iOS/Swift] Optional type을 unwrapping하는 법

🐹 이전편👇에 이어서 이번에는 옵셔널 타입을 unwrapping 하는 법에 대해 연재하겠습니다. [iOS/Swift] Optional type이란? -1- 🐹 앨런님의 강의를 보다가 처음에 나왔던 Optional type이 계속 나와서 추가적으로 공부가 필요하다고 느꼈다. 검색하다가 잘 정리된 자료가 있어서 참고하여 정리해보려고 한다. 옵셔널 타입에 wiwi-si.tistory.com 💻 Optional Types Syntax and Usage in Swift (옵셔널 타입 문법 및 사용) The declaration is similar to declaring regular variables, except that you add a question mark (?) beside the data type w..

Apple/Swift 2022.11.25

[iOS/Swift] Optional type이란?

🐹 앨런님의 강의를 보다가 처음에 나왔던 Optional type이 계속 나와서 추가적으로 공부가 필요하다고 느꼈다. 검색하다가 잘 정리된 자료가 있어서 참고하여 정리해보려고 한다. 옵셔널 타입에 대해 다루기 전에 우선 상수와 변수, 데이터 타입에 대한 정리가 먼저 필요하다. 💻 Constants and Variables in Swift (스위프트에서 상수와 변수) To understand what optional types are, let's quickly brush up on constants and variables. A constant is a data item whose value, once assigned, cannot be mutated (modified or changed) througho..

Apple/Swift 2022.11.24