예전에 UIkit을 공부하다가 DispatchQueue.main.asyncAfter를 알게되었는데 서버에서 가져온 데이터가 너무 빨리 로드가 되어서 약간의 딜레이와 함께 ProgressView()를 보여주고 싶어서 처음에 아래와 같이 코드를 구현했다. .onAppear { if index == musicStore.musics.count - 1 { Task { page += 1 isLoading = true try await Task.sleep(until: .now + .seconds(1), clock: .continuous) isLoading = false musicStore.musics += try await webService.fetchMusic2Data(page: page) } } } Dispatc..
// 에러가 난 코드 ForEach(musicStore.musics.enumerated(), id:\.offset) { (index, music) in LazyVStack(alignment: .leading){ Text("[\(music.앨범명)]") .bold() .padding(.bottom,5) Text("\(music.아티스트명) - \(music.저작물명)") } 저 에러 메세지를 그대로 번역해보자면 열거된 시퀀스 문자열이 임의 액세스 컬렉션을 준수해야 합니다. enumerated는 튜플로 반환되는 메소드이므로, random access collection을 준수하려면 Array로 만들어줘야한다. 그래서 Array(musicStore.musics.enumerated())로 형변환을 해주었더니 오..
Initializer'init(coordinateRegion:interactionModes:showsUserLocation:userTrackingMode:annotationItems:annotationContent:)' requires that 'CoinSinging' conform to 'RandomAccessCollection' 이번에도 모델 CoinSinging이 RandomAccessCollection이라는 프로토콜을 준수하지 않았다고 에러가 발생했다. RandomAccessCollection은 효율적으로 인덱스 순회를 지원하는 컬렉션이라고 한다. 그러면 해당 클래스이름 뿐만 아니라 그 안에 배열을 작성해야 정상적으로 작동한다. // 에러 Map(coordinateRegion: $region, a..
MapKit을 활용하여 Map 구조체를 불러올 때 2번째로 뜨는 coordinateRegion, annotationItems를 활용하여 구현하던 중에 에러가 발생했다. Initializer 'init(coordinateRegion:interactionModes:showsUserLocation:userTrackingMode:annotationItems:annotationContent:)' requires that 'CoinSinging' conform to 'Identifiable' CoinSinging은 json 형식의 데이터를 디코딩하고자 만든 모델인데 위 에러를 보면 'CoinSinging'모델이 identifiable을 따르지 않았다는 메세지이다. struct CoinSinging: Codable,..
애니메이션 그래프를 만드려고 버튼을 누르면 toggle 활성화에 따라 for문을 돌려 배열안의 요소를 변경하려고 버튼 바깥에 로직을 작성했는데 Static method 'buildBlock' requires that 'Int' conform to 'View'라는 에러가 났다. static 메서드 'buildBlock'을 사용하려면 'Int'가 'View'를 준수해야 합니다. 내가 뷰를 작성해야할 자리에 로직을 작성해서 에러가 난 것 같다. 그래서 로직을 지운 후에 아래 function으로 빼서 버튼 action 부분에 이 함수를 호출했더니 에러가 사라졌지만, No exact matches in call to instance method ‘append’라는 에러가 났다. 배열의 append하고자하는 타입이..
프로젝트 도중에 버튼을 누르면 배열에 append 하게 코드를 구현했는데 No exact matches in call to instance method ‘append’ '인스턴스 호출 메서드 'append'에 정확히 일치하는 항목이 없습니다.' 라는 에러가 났다. 무슨 말인가 하니 내가 @State private var numArray: [Int] = [0] @Published var resultChart: [CGFloat] = [] Int 타입의 numArray라는 배열에다가 CGFloat 타입의 resultChart 배열 요소들을 append하려고 했던 것이다. 심지어 resultChart의 요소를 append 하면 안되고, 애니메이션을 주기 위해 초깃값으로 resultChart.count 만큼 0을..