(대충 ForEach에서 ID가…) occurs multiple times within the collection, this will give undefined results!

라는 에러를 맞닥뜨렸다.

왜?

@State private var candidates: [Candidate] = [
	Candidates(name: "2unbini", id: "1234"),
	Candidates(name: "seri", id: "5678")
]

...

List {
	ForEach(candidates, id: \.self.id) { candidate in
		Text(candidate.name)
	}
}

이런 상태에서 candidates 배열이 업데이트가 잘못돼 동일한 id를 가진 요소가 두 개 이상 생겨버리면 위와 같은 에러가 뜬다.

어떻게 해결?

나는 그냥 id가 이상한 줄 알고 candidates.count로 해서 각 index를 id로 줬었는데, 그게 아니라 그냥 ForEach문에 들어가는 데이터 자체에 문제가 있었던 것이다.

그래서 데이터가 업데이트될 때 중복되지 않도록 해당 배열을 removeAll()해준 뒤 업데이트 해 주었다.

댓글남기기