Collection View 데이터 파싱

Brad·2022년 7월 19일
0

Collection View Cell label에 데이터 전달

프로젝트 진행 중에 ViewController에 있는 Collection View Cell에 각 label 마다 데이터를 넘겨줘야 하는데 ..

하나의 메소드에서 URL를 통해 JSON데이터를 가져오고 난 뒤에 ViewController에서 전역변수 설정 후 그 변수에 저장해주고 print를 해주면 nil, [] 이 나온다..

  1. 생성주기가 문제인가..?
  2. 메소드가 실행되는 순서의 문제인가..?

viewDidLoad, viewDidApper 등 여러 메소드들을 써봤지만 해결점이 나지 않았다.

데이터 저장하는 부분에 비동기적으로 걸어보았지만 결과는 똑같았다 🤔🤯

결과적으로 해결한 방법
-> 직접해결하진 못했지만 DispatchSemaphore를 써서 해결했다.
데이터를 저장하는 부분에 signal() 끝나는 부분에 wait()를 걸어 해당 구역이 끝날 떄까지 기다리라는 것을 명시해주었다. (아래의 코드처럼)

    func setData() {
        jsonParser.dataTask(by: URLCollection.productListInquery, completion: { (response) in
            switch response {
            case .success(let data):
                self.productData = data
                self.URLSemaphore.signal()
            case .failure(let data):
                print(data)
            }
        })
        URLSemaphore.wait()
    }

해결방법이 정확히 맞는? 좋은? 방법인지 모르겠으나, 일단 원하는데로 동작을 한다!!
먼가 혼자 머릿속으로 생각했었는데 실제로 구현을 해볼껄 그랬다.. 솔직히 귀찮아서(안될줄알고) 실제로 테스트 안해본 결과가 큰 것 같다.

잡담

프로젝트 시작 시 코드 vs 스토리보드 생각 많이 했는데 이번 프로젝트는 스토리보드로 했는데..

스토리 보드로 한 이유??
그동안 프로젝트를 코드로만 해서.. 단지 그 이유

어떤게 더 좋은 방법인지 생각해보다가 서로 장단점이 명확해서 블로그를 찾아봤는데
아래 블로그에서 명확하게 정리해 두었다.. 이제부터 코드?를 중점적으로 해봐야 할듯하다..
https://trilliwon.medium.com/storyboard-vs-code-510afb519d45
위의 블로그의 내용을 정리하자면 좋은 방식은 Code로 하는게 좋다

애플도 대부분의 UI는 코드로 작성되어 있다.
이번 프로젝트에서 꺠달음.. 자료가 코드가 훨씬 많음

profile
iOS 개발자가 되고 싶은 브래드 입니다.

0개의 댓글