부스트코스 iOS 3차 프로젝트 ‘WeatherToday’ 과제에서는 프로젝트에 . json 파일을 넣고 사용해야 했다.
문제 사항
json 파일을 읽어오려면 아래와 같이 json파일의 path 를 적어야 한다.
let jsonPath = "/Users/kangsujin/Desktop/boostcourse/Weather/Weather/Weather/Data/countries.json"
String(contentsOfFile: jsonPath)
이때 path를 위와 같이 하드코딩식으로 작성하면 내 로컬에서는 돌아가겠지만 채점할 때 에러가 날 것이 분명했기에 프로젝트의 상대경로에 해당하는 path를 찾아야했다.
해결 방법
이때 사용할 수 있는 메소드가 Bundle의 path 함수이다. 해당 함수는 이름과 file의 확장자를 통해 정의된 리소스의 full pathname 을 반환한다.
let fileName = "countries"
let fileType = "json"let jsonPath = Bundle.main.path(forResource: fileName, ofType: fileType)
이런식 프로젝트에 있는 counries.json 파일의 fullPath를 얻을 수 있다.
🤔❓
예전에는 Bundle.main.path로 파일 경로를 찾았을때 파일이 프로젝트 가장 상위 폴더에 있지 않으면 찾지 못한 것 같았는데 지금은 파일이 서브폴더에 있어도 잘 찾아서 값을 반환했다. 옛날 기억은 착각인가…?
/Users/kangsujin/Library/Developer/CoreSimulator/Devices/EADA6787-410B-4F72-8410-35F009B66C81/data/Containers/Bundle/Application/E78A4A88-6BCE-4624-85B9-C43C62159085/Weather.app/countries.json
참고로 위의 로그는 위의 jsonPath를 프린트한 것이다.