Search
Duplicate

반복문으로 생성된 뷰들을 구별하는 방법 - 다이나믹 리스트 생성방법

반복문으로 생성된 뷰들을 구별하는 방법

ListForEach 를 사용할 경우 각 요소를 어떻게 구분할 지 지정해주어야 한다.
즉 Unique Identifier 를 지정해 주어야 한다.
이는 두가지 방식으로 가능하다.

1. Key Path

직접 id 를 지정하는 방식이다.
List(landmarkData, id: \.id) { landmark in LandmarkRow(landmark: landmark) } struct Landmark { var id: Int var name: String fileprivate var imageName: String fileprivate var coordinates: Coordinates var state: String var park: String var category: Category } 출처: https://yeonduing.tistory.com/40 [yeonduing]
Swift
복사
이처럼 리스트 함수 자체에 아이디를 넘겨 줄 수 있다.
이때 id 가 아니라 name 같은 아무 프로퍼티를 사용해도 되지만 꼭 유일한 식별자를 지정해주어야한다.

UUID() 를 사용하면 매번 객체가 생성될 때 유일한 식별자를 자동으로 생성해준다.

2. Identifiable Protocol

Identifiable 프로토콜을 채택하면 Key Path 를 따로 넘겨주지 않아도 된다.
List(landmarkData) { landmark in LandmarkRow(landmark: landmark) } struct Landmark: Identifiable { let id = UUID() var name: String fileprivate var imageName: String fileprivate var coordinates: Coordinates var state: String var park: String var category: Category }
Swift
복사
즉 스트럭트에 id 프로퍼티가 존재하면