inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Lv.1] iOS 17 앱 개발 기초 - SwiftUI로 시작하기

List

ListBasic 강의 문의 - 딸기 id 오류 및 move 오작동

해결된 질문

222

랑프_Langpeu

작성한 질문수 21

0

struct ListBasic: View {
    //property
    @State var fruits:[String] = [
        "사과","오렌지","바나나","수박"
    ]
    
    @State var meats:[String] = [
        "소고기","돼지고기","닭고기"
    ]
    
    var body: some View {
        NavigationView {
            List {
                Section {
                    //content
                    ForEach(fruits, id: \.self) { fruit in
                        Text(fruit)
                            .font(.body)
                            .foregroundColor(.white)
                            .padding(.vertical)
                    }
                    .onDelete(perform: delete)
                    .onMove(perform: move)
                    .listRowBackground(Color.blue)
                } header: {
                    Text("과일종류")
                        .font(.headline)
                        .foregroundColor(.brown)
                } // : Section
                
                Section {
                    ForEach(meats, id: \.self) { meat in
                        Text(meat)
                            .font(.body)
                    }
                } header: {
                    Text("고기종류")
                        .font(.headline)
                        .foregroundColor(.red)
                } // : Section
                
            }//: List
            .navigationTitle("우리동네 마트")
            .navigationBarItems(leading: EditButton(), trailing: addButton)
        }// : NavigationView
        
    }
    
    // Fucntion
    func delete(indexSet: IndexSet) {
        fruits.remove(atOffsets: indexSet)
    }
    
    func move(indices:IndexSet , newOffSet: Int) {
        fruits.move(fromOffsets: indices, toOffset: newOffSet)
    }
        
    var addButton: some View {
        Button {
            fruits.append("딸기")
        } label: {
            Text("Add")
        }
    }
    
}

 

강의 내용에 따라 작성후 프리뷰 플레이에서 확인해 보니

에디트 모드에서 과일을 move 해봤는데 버벅 거리면서

이동하려던 과일이 원래 위치로 돌아갑니다.

 

증상 분석

 

  1. 프리뷰에서 테스트

프리뷰 플레이에서 move 시 원래 위치로 돌아감

 

2. 디바이스에서 테스트

move 정상 작동

딸기 추가 시 아래 메시지 노출

ForEach<Array<String>, String, ModifiedContent<Text, _PaddingLayout>>: the ID 딸기 occurs multiple times within the collection, this will give undefined results!

CADisplayTimingsControl too many reasons.

CADisplayTimingsControl too many reasons.

CADisplayTimingsControl too many reasons.

 

스크린샷 2024-05-15 오후 12.06.26.png

 

강의 관련된 질문은 언제나 환영입니다 😄

ios swift swiftui

답변 1

0

Jacob(제이콥)

안녕하세요 랑프 님.

질문주신 List 에서 프리뷰에서 원래 위치도 돌아가고 디바이스에서 정상작동 되었는데 Preview 상의 Error 로써 Preview는 말 그대로 미리 확인용으로 간단하게 코드 변경시, 확인 용도입니다. 실제 기능구현은 Simulator 상에서 주로 이뤄지기 때문에 Simulator 에서 확인 부탁 드립니다.

ForEach<Array<String>, String, ModifiedContent<Text, _PaddingLayout>>: the ID 딸기 occurs multiple times within the collection, this will give undefined results!

위 에래 메세지는 ForEach 반복문시 같은 ID 값이 있을경우 값이 충돌 할 수 있다는 경고 메세지 입니다. 예시로 ForEach 구문에 id:\.self 를 사용해서 자신의 이름이 ID 가 되게끔 했습니다. 딸기 가 지속적으로 추가시 ID 가 딸기가 여러번이라 충돌이 발생합니다.

강의에서는 List 에서 Edit, Add, delete 을 어떻게 적용하는지에 대해서 간단히 설명 하였지만, 실제는 Model 에서 ID 값을 각각 지정해주고 그것을 반복문 사용해서 사용해줘야 합니다.

추후 강의나, 프로젝트에서 ID 를 사용하면 위와 같은 Message 는 나오지 않습니다.

감사합니다

소리가 ㅠㅠ

0

53

2

index와 indexSet

0

59

2

NavigationBarItems Deprecated

0

96

3

Xcode version 문제

0

195

2

GalleryView 작성시, @State? @Bidnable? 의 차이점이 뭔지 궁금합니다.

0

303

2

페이지 이동에 관해 질문이 있습니다 !

0

339

2

scrollTransition 에서 phase 값을 찍어보고 싶습니다.

0

277

2

갤러리에서 슬라이더 변경시 gridSwitch 가 두번 실행됩니다.

0

307

2

유튜브 영상 플레이시 워닝 이슈 문의

0

518

1

LazyGrid 강의 문의 - 데이터가 30개 인데 로우가 3줄이면 27개만 노출됨

0

269

1

ScrollView에서 질문 있습니다.

0

286

1

MVVM에서 처음

0

216

1

ExtractView, @Binding 강의에서 .previewLayout(.sizeThatFits) 함수 관련해서 질문드립니다.

0

336

2

iOS 15 버전이후 프리뷰 문제 관련해서 질문드립니다.

0

343

2

VStack으로 프리뷰 생성

0

393

2

MVVM 폴더 안에서 Preview가 작동하지 않습니다.

0

249

1

Preview 질문

0

415

2

LazyGrid 질문 있습니다.

0

337

1

Textfield 입력시 한글 자음 모음 분리 현상이 발생 합니다

1

6531

2

Sheet가 바로 닫히는 문제와 홈 화면 액션 관련 문의

0

288

1

NavigationView를 NavigationStack 으로 변경관련입니다.

1

357

1

Frame 강의에서 다른 결과물이 나와요

0

387

1

Frame에 대한 개념 질문

0

251

1

ShareLink에서 이미지 링크에서 이미지 크기 제한이 있나요?

0

317

2