James James - 2 months ago 8
iOS Question

Integer overflows when stored into 'Int Phone Number

In xcode 8, I am getting an error when I try to archive. This is the code:

@IBAction func dialNumber(_ sender: AnyObject) {

if let url = URL(string: "tel://\(8708382937)") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}


On the line that begins with "if let..." I am getting this error:
Integer literal '8708382937' overflows when stored into 'Int'

Answer

This is expected and a correct error. Why are you putting the number in \()? That evaluates it as Swift. As Swift that's a literal number, which is too big to fit in an Int. You almost certainly mean this:

"tel://8708382937"

Or more sensibly:

"tel:8708382937"

(The slashes are specifically part of the HTTP URL-scheme. They are not a general part of URLs and do not belong on tel URLs.)