지금까지 배운 내용들을 정리하고 연습 프로젝트를 진행한다.

Key points

지금까지 배운 내용들 중 핵심 내용 3가지를 살펴본다.

struct, class

구조체와 클래스에는 크게 5가지의 차이점이 있다.

  1. 클래스에는 멤버별 초기화 구문이 없지만 구조체는 기본적으로 있다.
  2. 클래스는 상속으로 기능을 구현할 수 있지만 구조체는 불가능하다.
  3. 클래스를 복사하면 동일한 데이터를 가리키지만 클래스는 모두 고유하다.
  4. 클래스는 초기화 해제 구문을 가질 수 있지만 구조체는 불가능하다.
  5. 상수 클래스의 var 프로퍼티는 변경 가능하지만, 상수 구조체 내부의 프로퍼티는 var이든 let이든 변경 불가능하다.

swiftUI에서는 classstruct 둘 다 사용할 수 있고, 해결해야 할 구체적인 문제에 따라 어떤 것을 사용할지 달라진다..

ForEach

ForEach또한 하나의 뷰이지만 루프를 통해 다른 뷰를 반복해 생성할 수 있다.
이 때 ForEach 자체가 하나의 child가 되기 때문에, swift에서의 child 10개 제한을 피해갈 수 있다.

아래와 같은 배열이 있을 때,

let agents = ["Cyril", "Lana", "Pam", "Sterling"]

ForEach에서 배열을 순회하는 방법.

  1. array.count

배열의 범위만큼 숫자를 1늘리며 반복한다.

ForEach(0..<agents.count) {
    Text(agents[$0])
}
  1. \.self

배열 자체를 반복한다.

ForEach(agents, id: \.self) {
    Text($0)
}

  1. Identifiable 프로토콜을 이용한 반복

바인딩

Picker, TextField와 같은 경우 $프로퍼티이름을 사용하여 @State 프로퍼티에 대해 양방향 바인딩을 생성한다.

다른 프로퍼티를 사용하여 @State 프로퍼티의 값을 읽고, 설정하는 방법

@State private var selection = 0

var body: some View {
    let binding = Binding(
        get: {selection}, 
        set: {selection = $0}
    )
}


카테고리:

업데이트: