Search
Duplicate
📕

Part 1. 개발에 필요한 기초 문법

생성일
2024/09/09 06:55
태그
SwiftUI
Grammar

Part 1. 개발에 필요한 기초 문법

Ch 3. 코드로 구조 잡기

01. 구조체 - 하나의 동작을 하는 객체 만들기

struct 구조체이름 { 프로퍼티 메서드 }
Swift
복사

02. 클래스 - 주소값으로 객체를 만들기

class 클래스이름 { 프로퍼티 메서드 }
Swift
복사

03. ObservableObject

ObservableObject - 관찰이 가능한 객체

04. 열거형 Enum - 필요한 선택지를 만드는 방법

선택지를 만들어 주는 것
enum Direction { case north case east case west case south }
Swift
복사
struct Choice: View { var direction: Direction = .north var member: String = "HJ" var body: some View { Text("방향은 \(direction.rawValue)쪽 입니다.") } } enum Direction: String { case north = "북" case east = "동" case west = "서" case south = "남" }
Swift
복사

05. 스위치 - 선택지를 사용해서, 케이스 별로 정리하는 방법

var direction: Direction = .north switch direction { case north: case east: case west: case south: default: }
Swift
복사

06. 옵셔널 - 있을 수 있는 것과 없는 것

있을 수도 있고 없을 수도 있는 값
타입 뒤에 ? 를 붙여서 만든다.

07. 옵셔널바인딩, 체이닝 - 옵셔널 값을 안전하게 사용하기

옵셔널은 안전함을 추구
없음을 표현하고 싶은게 아니라 사실 안전함을 추구
어떤 값에 접근하려 했을 때 없다면? → 크래쉬
그러면 어떻게 사용해야 안전?
옵셔널 바인딩, 옵셔널 체이닝
옵셔널 바인딩
옵셔널 안의 값을 꺼내는 작업
옵셔널 안에 값이 있는지 없는지 확인
만약 옵셔널 안에 값이 있다면 사용
if let name = petName { print(name) }
Swift
복사
옵셔널 체이닝
바인딩을 여러번 해야함
if let hj = hj { if let mbti = hj.mbti { if let name = mbti.name { } } } if let hjMbtiName = hj?.mbti?.name { } else { }
Swift
복사

Ch 4. 문법 활용해서 코딩하기

01. 예외처리 - 만약 에러가 발생한다면

예외처리
do { // 시험 삼아 해 볼 do try code // 에외가 일어날 수 있는 코드 } catch { // 에러 던지기 catch error // 에러 받기 }
Swift
복사
예외처리 어떻게 해줘야 할까?
사고는 한번만 터져도 사고
미리 예외처리 필수
// 가장 Simple if inputNumber != 0 { totalNumber / inputNumber } // throw 사용 if inputNumber != 0 { throw totalNumber / inputNumber } // do-catch 구문 do { try devideByInputNumber(input) } catch { print(error) }
Swift
복사
예제
import SwiftUI struct Exception: View { @State var inputNumber = "" @State var resultNumber: Float = 0 var body: some View { VStack { TextField("나눌 숫자를 입력해주세요.", text: $inputNumber) Text("나눈 결과는 다음과 같아요 \(resultNumber)") Button { do { try resultNumber = divideTen(with: Float(inputNumber) ?? 1.0) } catch DivideError.dividedByZero { print("0으로 나누었대요.") resultNumber = -1 } catch { print(error.localizedDescription) } } label: { Text("나누기") } } } func divideTen(with inputNumber: Float) throws -> Float { var result: Float = 0 if inputNumber == 0 { // error throw DivideError.dividedByZero } else { result = 10 / inputNumber } return result } } enum DivideError: Error { case dividedByZero }
Swift
복사

02. 프로토콜 - 설계하고 설계대로 만드는 방법

Protocol
지켜야 하는 규칙
protocol 프로토콜이름 { 프로퍼티 메서드 }
Swift
복사

03. 제네릭 - 모든 타입을 커버하는 방법

Generic
타입에 의존하지 않은 범용 코드
func 함수이름<T>(input: T) { input -> T타입변수 }
Swift
복사