728x90
반응형
이번에 코드 작성하다 알게 됐는데요,
SwiftUI에서 여러분들이 일반적으로 foreach를 쓸 때 아래와 같이 쓸 거 같은데요,
ForEach(0..<10) { num in
Text("\(num)")
}
//or
let numbers = 10
ForEach(0..<numbers, id: \.self) { num in
Text("\(num)")
}
이번에 새로 알게 된 점은 여기서 id가 없으면 SwiftUI 내부적으로 식별자를 자동으로 추론한다고 합니다.
여기까진 별 문제없죠?
근데 여기서 문제가 만약 numbers가 항상 변동성이 있는, 뭔가 값도 복잡하고 코드도 복잡해지고 그렇게 되면?
정상적으로 id를 추론하지 못하게 됩니다.
numbers가 변경되어도 안에 생성될 셀들이 제대로 그려지지가 않더라고요.
데이터를 뽑아보면 정상적으로 값은 변동되고 있지만 제대로 반영되지 않아 그대로인 것처럼 보이더라고요?
제 경우엔 부족했었습니다.
하여 위의 두 가지 중 아래의 예시처럼 id를 명시적으로 적어주면 정확하게 개수가 맞춰지더라고요.
만약에 위처럼 하지 않을 것이다! 난 나만의 길을 개척하겠어! 하신다면 아래의 예시처럼
let numbers = 10
ForEach(0..<numbers) { num in
Text("\(num)")
}
.id(적당한 변수)
`.id(:)` 모디파이어를 사용해 주면 된다고 합니다.
728x90
반응형
'공부 > Apple' 카테고리의 다른 글
[Swift] Calendar와 DateFormatter의 관계 (0) | 2025.03.03 |
---|---|
[Swift] xcconfig, gitignore 파일 만들고 안전하게 적용하기 (0) | 2024.12.22 |
[Swift] Date는 타임존이 적용되지 않는다. (1) | 2024.12.10 |
[Swift] Codingkey에 모든 키가 있어야 할까? (0) | 2024.12.02 |
[Swift] Xcode AI코드 에러(긴급) (0) | 2024.11.22 |