인프런 커뮤니티 질문&답변

윤아님의 프로필 이미지
윤아

작성한 질문수

SwiftUI - iOS14 퍼펙트 가이드

9 List ForEach

ForEach에 ClosedRange

작성

·

1K

0

ForEach(0...10){ }

위와 같은 모양으로 코드 작성시 아래와 같은 에러가 발생합니다.

Cannot convert value of type 'ClosedRange<Int>' to expected argument type 'Range<Int>'

0..<10과 같이 사용해야 하는 것 같습니다. 강의 내용처럼 ForEach에 ClosedRange를 쓸 수 있는게 맞나요?

답변 1

0

iOS Developer - 이정님의 프로필 이미지
iOS Developer - 이정
지식공유자

안녕하세요

아마 이전에는 가능했는데 지금 안된다면

SwiftUI 버전에 따라 조금씩 바뀌는 부분이라고 생각하시면 될 것 같습니다.

되는 케이스 몇개 보여드리면 정리가 될 것 같습니다.

우선 아래와 같이 id로 self를 지정하면 간단히 해결 가능합니다.

range를 사용하는 방법도 있습니다.

0...5 이렇게 하지않고 0..<5 이렇게 범위를 잡으면 되기도 합니다.

이 차이는 range와 closedRange의 차이이기도 하는데

0..<5 이렇게 마지막을 포함하지 않는 형태로 만들면 range입니다.

0...5 이렇게 마지막을 포함하면 ClosedRange입니다.

ClosedRange는 identifiable을 준수하지 않아서 \.self같이 자기자신을 id로 잡아야 한다고 선언하는 부분이 필요하게 된다고 이해하면 될 것 같습니다.

윤아님의 프로필 이미지
윤아

작성한 질문수

질문하기