나는이 코드를 가지고있다. 문서 디렉토리에 파일이 있는지 확인한다. 컨트롤러에 데이터를 설정하는 데 사용된다면, 파일 공급 업체를 사용한다. 번들을 생성하고 실패한 경우 빈 뷰 컨트롤러를 설정합니다.스위프트 4 대안으로하자면
변수 대신 parse(fromFile:)
메서드를 작성할 수 있도록 url
변수를 조건부로 설정하는 방법이 있습니까? 가장 직관적 인 방법은 if let url = something || let url = somethingElse
으로 표시되며 대괄호 안에 parse(fromFile: url)
을 수행하지만 신속하게 처리 할 수없는 것으로 보입니다.
if let url = try? FileManager().url(for: .documentDirectory,
in: .userDomainMask,
appropriateFor: nil,
create: true).appendingPathComponent("database.json") {
parse(fromFile: url)
} else if let url = Bundle.main.url(forResource: "database", withExtension: "json") {
parse(fromFile: url)
} else {
setUpWithNothing()
}
이 경우에는'try! '를 사용하는 것에 대해 정말로 걱정하지 않을 것입니다. 수 있습니까? FileManager(). url (...)'도 실패합니까? 문서 디렉토리는 항상 존재해야합니다. 또한,'FileManager()'를 사용하여 새로운 것을 생성하는 대신에'FileManager.default'를 사용해야합니다. 나는 코드가 파일이 존재하는지 실제로 확인한다고 생각하지 않는다.적어도 필자는 문서에서 제안 할만한 것을 보지 못했다. – Sulthan
@Sulthan, 존재 여부는 확인되지 않았지만 Documents 디렉토리의 database.json없이 코드를 실행하면 실제로 bundle에 제공된 database.json이 사용되므로 누가 알 수 있습니다. –