Xcode es un entorno de desarrollo integrado (IDE, en sus siglas en inglés) para macOS que contiene un conjunto de herramientas creadas por Apple destinadas al desarrollo de software para macOS, iOS, watchOS y tvOS. Su primera versión tiene origen en el año 2003 y su versión más reciente es la 10.1
Permite compilar código C, C++, Swift, Objective-C, Objective-C++, Java y AppleScript.
Swift es un lenguaje de programación multiparadigma creado por Apple enfocado en el desarrollo de aplicaciones para iOS y macOS.
Un storyboard contiene la representación gráfica de las “pantallas” (los controladores) que componen nuestra aplicación y de las relaciones entre ellas. Además el sistema se encarga automáticamente de moverse por las pantallas cuando sucedan determinados eventos, instanciando los controladores y las vistas automáticamente.
La clase UIViewController define el comportamiento compartido que es común para todos los view controllers.
Sus principales responsabilidades son las siguientes:
- Actualización del contenido de las vistas.
- Respondiendo a las interacciones del usuario con las vistas.
- Cambiar el tamaño de las vistas y gestionar el diseño de la interfaz general.
- Coordinar con otros objetos, incluidos otros view controllers, en su aplicación.
Son propiedades especiales declaradas con la palabra clave IBOutlet. IBOutlet le indica Xcode que vamos a conectar esa propiedad con un objeto de un Storyboard.
@IBOutlet weak var myTextField: UITextField;
Las acciones son métodos que devuelve IBAction. La palabra IBAction le indica a Interface Builder que el método puede ser disparado desde un evento lanzado por un elemento gráfico de un Storyboard.
La primera definición recibe como parámetro el elemento que lanzó el evento que produjo que se invocase al método.
@IBAction func var onClick(_ sender:Any) {
}
@IBAction func onClick(_ sender:Any) {
var urlComponents = URLComponents(string: "enlace del servicio")!
urlComponents.queryItems = [
URLQueryItem(name: "n1", value: textInput1.text!),
URLQueryItem(name: "n2", value: textInput2.text!)
]
let task = URLSession.shared.dataTask(with: URLRequest(url: urlComponents.url!)) { data, response, error in
if let error = error {
print ("error: \(error)")
return
}
guard let data = data,
let response = response as? HTTPURLResponse,
(200 ..< 300) ~= response.statusCode,
error == nil else {
print ("server error")
return
}
do {
if let responseObj = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
{
// Código que se ejecutara después que se cast los datos de la respuesta en un Diccionary
} else {
print("bad json")
}
} catch let error as NSError {
print(error)
}
}
task.resume()
}