NSURL found nil while unwraping an Optional value
Asked Answered
H

3

12

Anyone knows why am I getting

fatal error: unexpectedly found nil while unwrapping an Optional value

When i use

    let URL = NSURL(string: "https://roads.googleapis.com/v1/snapToRoads?path=-35.27801,149.12958|-35.28032,149.12907")!
Hannus answered 5/3, 2015 at 16:35 Comment(0)
A
17

The | character its not a valid URL character so you must replace it with percent escape character. Encoding whole string will do that automatically for you

var stringUrl = "https://roads.googleapis.com/v1/snapToRoads?path=-35.27801,149.12958|-35.28032,149.12907"

let URL = NSURL(string: stringUrl.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)!
Abrogate answered 5/3, 2015 at 16:40 Comment(4)
stringByAddingPercentEscapesUsingEncoding is deprecated. Use stringUrl .stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())Komarek
@ayteq I'm trying to use this as well... but it seems it just doesn't want to appendWallow
@Wallow Very strange! When you copy the code from my comment, it includes a special character which is not seen in Xcode. So please use auto-complete option in Xcode. Please see the problem here I can't edit my comment, sorry about that.Komarek
@zell B . I want to implement snap to roads Can u guide how to achieve this?Gandy
R
12

Swift 4

I was trying with :

https://api.url.com/method?token=abcdfghijklmopqrst&command=>SSSXP10<&otherParam=12345678

And the '>' and '<' characters was giving me the error.

For the solution :

let objectUrl = URL(string:url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!)
Robustious answered 29/4, 2019 at 19:56 Comment(1)
Thanks, just what I needed!Brinkema
G
0

Oh, It's a crazy issue. Because of < and > it was giving an error

let username = searchTextFileld.text!
let urlString: String = "https://api.github.com/search/users?q=\(username)+repos:>100+followers:>100"
Getup answered 2/12, 2019 at 18:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.