1

I'm trying to run this function when a button is tapped:

@IBAction func openLink(_ sender: UIButton) {
    let link1 = "https://www.google.com/#q="
    let link2 = birdName.text!
    let link3 = link2.replacingOccurrences(of: " ", with: "+") //EDIT
    let link4 = link1+link3
    guard
        let query = link4.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed),
        let url = NSURL(string: "https://google.com/#q=\(query)")
        else { return }
    UIApplication.shared.openURL(URL(url))
}

However, the last line is flagged as "cannot call value of non-function type "UIApplication". This syntax is from here, so I'm not sure whats going on.

Leo Dabus
  • 229,809
  • 59
  • 489
  • 571
Alex
  • 141
  • 2
  • 10

1 Answers1

10

Use guard to unwrap the textfield text property, replacing the occurrences, add percent encoding to the result and create an URL from the resulting string:

Try like this:

guard
    let text = birdName.text?.replacingOccurrences(of: " ", with: "+"),
    let query = text.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed),
    let url = URL(string: "https://google.com/#q=" + query)
else { return }
if #available(iOS 10.0, *) {
    UIApplication.shared.open(url)
} else {
    UIApplication.shared.openURL(url)
}
Leo Dabus
  • 229,809
  • 59
  • 489
  • 571
  • 2
    I really appreciate people like you helping people like us with our not so educated bugs and questions. You're literally helping us make a living! – mfaani Sep 13 '16 at 18:27