real 19
real 19

Reputation: 748

NSURL is returning nil for a valid URL

I have a valid URL for google maps , which if you run in your browser would show an image of a map. However, when I put it inside my Swift code and try to create an NSURL from String it returns nil

let urlString = "https://maps.googleapis.com/maps/api/staticmap?maptype=hybrid&center=37.33233141,-122.0312186&path=color:0xff0000|weight:10|37.33233141,-122.0312186|21.422570,%2039.826190&markers=color:blue%7Clabel:S%7C37.33233141,-122.0312186&markers=color:blue%7Clabel:S%7C21.422570,39.826190&zoom=1&size=1080x1920"
let url = NSURL(string: urlString)

Currently , this returns nil, I don't know why. Am I doing something wrong?

Upvotes: 2

Views: 3462

Answers (2)

Aruna Mudnoor
Aruna Mudnoor

Reputation: 4825

It should work: Here is why http://www.url-encode-decode.com

        let url = NSURL(string: urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)

Since above API is deprecated alternative approach is

    let url = NSURL(string: urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!)

Upvotes: 6

Cristik
Cristik

Reputation: 32922

Looking at the Apple documentation:

This method expects URLString to contain only characters that are allowed in a properly formed URL. All other characters must be properly percent escaped. Any percent-escaped characters are interpreted using UTF-8 encoding.

Likely there's something incorrect in your string, and you need to encode it before passing it to NSURL, you can do this via stringByAddingPercentEncodingWithAllowedCharacters:

if let encodedString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet() {
    url = NSURL(string: urlString)
}

Upvotes: 1

Related Questions