user2971617
user2971617

Reputation: 63

Swift3 : unexpectedly found nil while unwrapping an Optional value

I ve just upgrade from Swift 2 to Swift 3, and i m facing a new challenge...

I have a player which run perfectly before, but now i have this following issue : "unexpectedly found nil while unwrapping an Optional value"

Here is my code :

print(audioselectionne)

let alertSound = URL(fileURLWithPath: Bundle.main.path(forResource: audioselectionne as String, ofType: "mp3")!)

I ve got : Optional("tiesto") and the crash...

I really dont understand where is the issue...

Thanks for the help.

Upvotes: 1

Views: 1926

Answers (2)

Rob
Rob

Reputation: 437552

You should unwrap the optional, perhaps with optional binding.

BTW, you shouldn't be use path strings at all anymore. Just use the URL directly, e.g.

guard let resource = audioselectionne, let alertSound = Bundle.main.url(forResource: resource, withExtension: "mp3") else {
    // handle file not found here
    return
}

// use alertSound here

Upvotes: 1

zoul
zoul

Reputation: 104065

I think the Bundle.main.path method returns an optional String. When that’s nil (because the resource was not found), force-unwrapping it causes your error. If you want to handle it correctly, you have to check for the nil:

guard let path = Bundle.main.path(…) else {
    // resource not found, handle error
}

// now `path` is guaranteed to be non-nil
let alertSound = URL(fileURLWithPath: path)

Upvotes: 0

Related Questions