Swift version: 5.6
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 URL
.
For example, these two lines find the path to input.txt inside the bundle, as both a string and a URL
:
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 URL
.
SPONSORED From March 20th to 26th, you can join a FREE crash course for mid/senior iOS devs who want to achieve an expert level of technical and practical skills – it’s the fast track to being a complete senior developer!
Sponsor Hacking with Swift and reach the world's largest Swift community!
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.