두 프로젝트 합치기

Wongbing·2022년 2월 27일
0

축구경기 일정을 손쉽게 확인할 수 있는 어플제작을 위해 프로젝트를 진행 중에 있다.
먼저 달력기능을 수행해 줄 FSCalendar 라이브러리 이해를 위해 CalendarT 라는 프로젝트를 생성하여 달력에 날짜 클릭 시 NextVC 로 present modally 연결하여, 그 날짜를 "yyyy-MM-dd"로 출력해주는데 까지 성공했다
두번째로, 축구경기의 정보를 가져올 api를 적용해보는 apiSportTest라는 프로젝트를 만들어 season과 teamid 를 기본 값으로 주었을 때 결과값으로 아스날 팀의 2021 시즌 리그와 경기날짜 모두 파싱을 성공 했다(parseJSON)
이제 이 두 프로젝트를 유연하게 연결하는 것이 목표다. 기본으로 시즌(2021) 과 팀(아스날) 을 입력시키고
1. 캘린더에 아스날 팀의 일정을 도트표시 한다.
- 먼저 json에서 date 값만 뽑아온 datelist[String] 배열을 생성
- datelist 를 Date 타입으로 각각 변경해준 뒤 events 에 추가
- events[Date] 배열에 들어가있는 날들은 도트표시를 해준다
2. 도트입력이 된 날짜 클릭 시 그 날의 경기정보를 출력해주는 NextVC 로 segue 한다
- 날짜 클릭시 if 이 날짜가 events 배열에 포함되어 있는 날짜라면, segue를 한다

첫번째 화면 ViewController 에서는 시즌,팀id 를 기반한 모든 정보를 가져와서 거기서 날짜정보를 얻어와야 한다 생각해서

func getData(season:String,teamid:String){
}

이렇게 데이터를 가져왔지만,

두번째 화면 NextVC 에서는 클릭한 날짜"yyyy-MM-dd" 기반의 데이터를 가져와야 하기 때문에 date 값이 들어가야했다
두 VC에서 다르게 설정하는 방법을 생각하다가

func getData(season:String,teamid:String,date:String?){
		var urlString:String = ""
        if date == nil {
            urlString = "\(sportURL)season=\(season)&team=\(teamid)"
        }else{
            urlString = "\(sportURL)season=\(season)&team=\(teamid)&date=" + date!
        }
        performRequest(with: urlString)
}

이 방법을 이용해서 첫번째 VC 와 두번째 VC에 데이터를 다르게 가져왔다!

두 기능의 연결을 성공하여 캘린더에는 getData( season: 2021, teamid: 42) 을 통해 2021시즌 아스날의 모든 경기를 불러와 해당 날짜만 뽑아네어 도트로 표시해 주었고, 이 도트를 클릭 시 날짜값이 넘어가서 다음뷰에서 경기의 상세정보를 나타나게 해 주었다

profile
IOS 앱개발 공부

0개의 댓글