Reputation: 2084
I need to retrieve the URL of a resource contained in my Xcode project through a path that begins in the project's directory (aka mainBundle)
So if my specified path if ./snd/archer/acknowledge1.wav, I need to create a URL from that.
I know I can use NSURL(fileURLWithPath:)
for system directories, but I don't know how to do this directly from the bundle.
Upvotes: 20
Views: 33769
Reputation: 10429
As of Swift 3, the answer is:
Bundle.main.url(forResource: "acknowledge1", withExtension: "wav", subdirectory: "snd/archer")
Upvotes: 32
Reputation: 119041
You would use one of the bundle resourse URL methods
[[NSBundle mainBundle] URLForResource:@"acknowledge1"
withExtension:@"wav"
subdirectory:@"snd/archer"];
NSBundle.mainBundle().URLForResource("acknowledge1", withExtension:"wav" subdirectory:"snd/archer")
In latest Swift:
Bundle.main.url(forResource: "acknowledge1", withExtension:"wav")
Upvotes: 22
Reputation: 3289
In Swift 2.3 you'd have to use this unwrapping:
if let resourceUrl = NSBundle.mainBundle().URLForResource("acknowledge1", withExtension: "wav", subdirectory:"snd/archer") {
if NSFileManager.defaultManager().fileExistsAtPath(resourceUrl.path!) {
print("file found")
//do stuff
}
}
Upvotes: 1