Swift version: 5.2
It’s common to store resource data like text files and sound effects inside your bundle, but loading them must be done in a particular way to avoid problems.
Rather than try to figure out the layout of your bundle at runtime, the correct thing to do is call the
path(forResource:) method if you’re looking for a string path, or
url(forResource:) if you’re looking for a
For example, these two lines find the path to input.txt inside the bundle, as both a string and a
let stringPath = Bundle.main.path(forResource: "input", ofType: "txt") let urlPath = Bundle.main.url(forResource: "input", withExtension: "txt")
Obviously you only need one of those – if you get to choose then it’s safer to go with the
SPONSORED Ever ask for help and your reviewer immediately notices issues you missed? Fernando Olivares is a 10-year veteran from Big Nerd Ranch and Lambda School who can help hone your app building skills, and he's just launched a new book that does just that – use the code "hacking" to save $5!
Available from iOS
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.