Xcode simulator 환경에서 bundle 파일 접근시 unicode 파일명 엑세스시 접근 안될시 해결

입질쾌감 물때표

아이폰 실물 디바이스에서는 Bundle.main.path로 파일을 접근해서 파일을 읽어올때 아무런 문제가 없다. 아래의 글은 simulator 환경에서만 있는 상황이다.

예를 들어 아래의 코드로 어떠한 번들용 이미지 파일을 접근한다고 했을때, 만약 파일명이 ‘한글’로 되어있을 경우 아래의 코드는 nil 리턴의 else 블록으로 진행되게 된다.

guard let bundlePath = Bundle.main.path(forResource: "파일명", ofType: "확장자") else {
    return nil
}

번들로 저장한 파일들을 직접 접근할때, path(forResource:ofType:)으로 해당 파일의 파일명만 던져도 접근하는데 문제가 없는데 시뮬레이터로 접근할때에는 FullPath로 접근해야 파일 엑세스에 문제가 없다. 이미지 파일을 가져오는데 있어서 아래처럼 처리해 주면 정상동작됨을 확인할수 있다.

let name = "한글파일명"
let ofType = "png"
let bundlePath = Bundle.main.bundlePath
let imagePath = bundlePath + "/" + name + "." + ofType
let image = UIImage(contentsOfFile: imagePath)

시뮬레이터의 특수한 상황 때문에 생기는 이슈 인 듯. 잘 동작해서 더이상 이유에 대해서는 고민하지 않았다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다