En swift, las propiedades se utilizan para describir los atributos de un objeto y esos pueden ser una constantes o variables en las clases, estructuras o enumeraciones.
En swift las propiedades se utilizan para almacenar los valores de las clases, estructuras o enumeraciones y las propiedades tienen métodos getter y setter para modificar o establecer los valores de la propiedad en base a nuestros requerimientos.
- Swift Define a Property
- Asignación y acceso rápido a las propiedades
- Propiedades Almacenadas Swift
- Propiedades almacenadas para instancias de estructuras constantes
- Propiedades almacenadas perezosamente en swift
- Propiedades computadas en swift
- Propiedades computadas de sólo lectura en swift
- Swift Property Observer
- Propiedades de tipo swift
- Consulta y establecimiento de propiedades de tipo en swift
Swift Define a Property
A continuación se muestra el sencillo ejemplo de creación de una clase con propiedades en un lenguaje de programación swift.
clase UserDetails {
var firstName: String = «»
var lastName: String = «»
}
Si observas el ejemplo anterior hemos definido una clase «UserDetails» con dos propiedades (firstName, lastName).
Asignación y acceso rápido a las propiedades
A continuación se muestra el ejemplo de declaración y asignación de valores a las propiedades definidas en la clase.
class UserDetails {
var firstName: String = «»
var lastName: String = «»
}
var uinfo = UserDetails()
uinfo.firstName = «Suresh»
uinfo.lastName = «Dasari»
print(«Nombre: \( uinfo.firstName) \(uinfo.lastName)»)
Si observas el ejemplo anterior hemos definido dos propiedades «firstName», «lastName» y estos valores están asociados a la clase «UserDetails». Después de eso creamos instancia para esa clase y acceder a las propiedades dentro de la clase para asignar valores basados en nuestros requisitos.
Cuando ejecutamos el programa anterior en swift playground obtendremos un resultado como el que se muestra a continuación
De la misma manera podemos definir y acceder a propiedades en estructuras y enumeraciones basadas en nuestros requerimientos en el lenguaje de programación swift.
Tenemos un tipo diferente de propiedades disponibles en el lenguaje de programación swift esas son
- Propiedades Almacenadas
- Propiedades Calculadas
Propiedades Almacenadas Swift
En swift la propiedad almacenada es una constante o variable y se almacena como parte de una instancia de una clase o estructura particular. La propiedad almacenada se puede utilizar para almacenar una variable con la palabra clave var
y una constante con la palabra clave let
.
Podemos proporcionar un valor por defecto para una propiedad almacenada como parte de su definición y podemos modificar los valores iniciales de una propiedad almacenada durante su inicialización.
Ahora vamos a ver cómo definir las propiedades almacenadas en las clases y cómo modificar los valores iniciales de las propiedades almacenadas durante su inicialización con el ejemplo.
El siguiente es el ejemplo de la definición de las propiedades almacenadas como parte de la clase o estructura en un lenguaje de programación swift.
struct UserDetails {
var firstName: String = «Rohini»
let lastName: String
}
var uinfo = UserDetails(firstName: «Suresh», lastName: » Dasari»)
print(«Nombre: \( uinfo.firstName) \(uinfo.lastName)»)
Si observas el ejemplo anterior hemos definido dos propiedades almacenadas (firstName, lastName) una como variable (var
) y otra como constante (let
) con valores iniciales. Después de eso creamos la instancia de la estructura y modificamos los valores iniciales durante su inicialización.
Cuando ejecutamos el programa anterior en swift playground obtendremos un resultado como el que se muestra a continuación
Así es como podemos definir propiedades almacenadas en clases, estructuras, enumeraciones basadas en nuestros requerimientos en el lenguaje de programación swift.
Propiedades almacenadas para instancias de estructuras constantes
En swift, podemos definir una clase o estructura con propiedades almacenadas como una constante. En caso de que definamos una propiedad constante con valor inicial entonces no nos es posible modificar ese valor porque una vez que el valor asignado a una variable constante que debe ser el mismo en toda la aplicación.
En caso de que intentemos modificar el valor de la propiedad constante durante su inicialización o con la instancia de una clase, el compilador lanzará un error.
El siguiente es el ejemplo de modificación del valor de la propiedad constante almacenada después de inicializar el valor durante la creación de la instancia de la clase.
struct UserDetails {
var firstName: String = «Rohini»
let lastName: String
}
var uinfo = UserDetails(firstName: «Suresh», lastName: » Dasari»)
uinfo.lastName = «Alavala»
print(«Nombre: \( uinfo.firstName) \(uinfo.lastName)»)
Si observas el ejemplo anterior definimos una propiedad constante «lastName» y asignamos un valor a la variable durante la creación de la instancia de la clase. Después de que de nuevo estamos tratando de modificar el valor de la variable constante.
Cuando tratamos de ejecutar el ejemplo anterior en swift playground obtendremos un error como se muestra a continuación
Error: no se puede asignar a la propiedad: ‘lastName’ es una constante ‘let’
Una vez que asignamos un valor a la propiedad constante que debe ser el mismo en toda la aplicación de lo contrario arrojará un error. Para más información sobre las constantes consulta este Swift Constants.
Propiedades almacenadas perezosamente en swift
En swift la propiedad almacenada perezosamente es una propiedad cuyo valor inicial no se carga hasta la primera vez que se utiliza el valor de la propiedad. En swift, podemos definir una propiedad almacenada perezosamente utilizando la palabra clave lazy
antes de su declaración.
En swift las propiedades almacenadas perezosamente son útiles cuando el valor inicial de la propiedad no se requiere cargar hasta que se utiliza en la aplicación. Supongamos que tenemos una propiedad y necesitamos realizar algunas operaciones complejas para cargar o inicializar el valor pero se requiere sólo en lugares específicos en ese caso si usamos propiedades almacenadas perezosas esos valores no se cargarán hasta que lo usemos en nuestro código.
Ahora veremos cómo utilizar propiedades almacenadas perezosas en aplicaciones swift con ejemplos.
A continuación se muestra el ejemplo de uso de la propiedad almacenada perezosa en el lenguaje de programación swift.
clase Estudiante {
var nombre: String
lazy var studentInfo: String = {
devuelve «¡Bienvenido a Tutlane, \(self.name)!»
}()
init(name: String) {
self.name = name
}
}
let stu = Student(name: «Suresh»)
print(stu.studentInfo)
Si observas el ejemplo anterior definimos una propiedad almacenada perezosa «studentInfo» utilizando la palabra clave lazy
. El valor de esta propiedad no se cargará hasta que la sentencia print llame a la propiedad desde la instancia de la clase student.
Cuando ejecutamos el programa anterior en swift playground obtendremos un resultado como el que se muestra a continuación
Así es como podemos usar las propiedades almacenadas perezosas en un lenguaje de programación swift basado en nuestros requerimientos.
Aquí necesitamos recordar que siempre necesitamos declarar las propiedades almacenadas perezosas como una variable (var) porque su valor no se recupera hasta que la inicialización de la instancia se completa pero para las propiedades constantes (let) deben tener un valor antes de que la inicialización se complete esa es la razón por la que siempre necesitamos definir las propiedades perezosas como variables.
Propiedades computadas en swift
En swift a diferencia de las propiedades almacenadas, las propiedades computadas no almacenarán un valor en su lugar las propiedades computadas proporcionarán un getter y un setter opcional para recuperar y establecer los valores de otras propiedades indirectamente. Podemos definir propiedades computadas en clases, estructuras y enumeraciones basadas en nuestros requerimientos.
El siguiente es el ejemplo de definir propiedades computadas usando getter y setter para establecer valores en el lenguaje de programación swift.
class Circle {
var radius : Double?
var cval : Double?
var Area: Double {
get {
return ¡radio! * radio!
}
set (newArea){
cval = Double(newArea) * 3.14
}
}
let result = Circle()
resultado.Area = 20
print(result.cval)
Si observas el ejemplo anterior estamos estableciendo un nuevo valor para la propiedad «Area» utilizando las propiedades getter y setter.
Cuando ejecutamos el programa anterior en el playground de swift obtendremos un resultado como el que se muestra a continuación
Así es como podemos utilizar las propiedades computadas en un lenguaje de programación swift para utilizar valores sin almacenar en base a nuestros requerimientos.
Propiedades computadas de sólo lectura en swift
Una propiedad computada con sólo getter pero sin setter se conoce como propiedades computadas de sólo lectura. En swift podemos acceder a la propiedad computada de sólo lectura a través de la sintaxis de punto (.) y siempre devuelve un valor.
El siguiente es el ejemplo de uso de propiedades computadas de sólo lectura en un lenguaje de programación swift.
clase Multiplicación {
var num1 : Int = 5
var num2 : Int = 5
var multiplicar: Int {
get {
return num1 * num2
}
}
let r = Multiplication()
print(r.multiply)
En el ejemplo anterior definimos dos propiedades con valores por defecto en la clase y multiplicamos esos dos números usando el getter. Después de eso creamos una instancia para la clase y el acceso al valor getter usando punto (.) sintaxis.
Cuando ejecutamos el programa anterior en swift playground obtendremos el resultado como se muestra a continuación
Esta es la forma en que podemos utilizar propiedades computadas de sólo lectura para establecer los valores utilizando la propiedad getter en el lenguaje de programación swift.
Swift Property Observer
En swift los observadores de propiedades se utilizan para observar y responder a los cambios en el valor de la propiedad y estos observadores de propiedades llamarán cada vez que el valor de la propiedad cambie, incluso si el nuevo valor de la propiedad es igual al valor actual de la propiedad.
En swift, los cambios en las propiedades se pueden observar mediante el uso de los siguientes dos observadores.
- willSet – Este observador se llama justo antes de que el valor se almacena.
- didSet – Este es un observador se llama después de que el nuevo valor se almacena.
En swift, podemos utilizar observadores de propiedad en cualquier propiedades almacenadas, excepto propiedades almacenadas perezoso.
A continuación se muestra el ejemplo de uso de las propiedades willSet y didSet en un lenguaje de programación swift.
clase Cambios {
var num1: Int = 10 {
willSet(newvalue) {
print(«Valor de \(newvalue)»)
}
didSet {
if num1 > oldValue {
print(«Added \(num1 – oldValue)»)
}
}
}
let result = Changes()
resultado.num1 = 34
resultado.num1 = 987
Si observas el ejemplo anterior utilizamos los observadores willSet y didSet y estas propiedades son llamadas cada vez que se cambia el valor de la propiedad.
Cuando ejecutamos el programa anterior en swift playground obtendremos un resultado como el que se muestra a continuación
Valor de 34
Agregado 24
Valor de 987
Agregado 953
Propiedades de tipo swift
En swift, las propiedades de instancia se asocian a una instancia de clase o estructura, las propiedades de tipo se asocian a un tipo en sí, no pertenece a ninguna instancia del tipo.
En swift, podemos definir una propiedad de tipo con la palabra clave estática y para las propiedades de tipo computadas y para los tipos de clase tenemos que utilizar la palabra clave class
pero no permitirá anular los métodos o variables de la superclase.
El siguiente es el ejemplo de uso de la propiedad de tipo en el lenguaje de programación swift.
struct typepro {
static let msg = «Bienvenido a Tutlane»
}
class Class1 {
func test() { print(typepro.msg) }
}
class Class2 {
func test() { print(typepro.msg) }
}
var ss = Class1()
ss.test()
Si observas el ejemplo anterior definimos una propiedad de tipo con la palabra clave static y accedemos a los valores de la propiedad de tipo haciendo referencia al nombre y utilizando la sintaxis del punto para acceder al valor.
Cuando ejecutamos el programa anterior en el lenguaje de programación swift obtendremos el resultado como se muestra a continuación.
Consulta y establecimiento de propiedades de tipo en swift
En swift, las propiedades de tipo se consultan y podemos establecer el valor con la sintaxis de punto (.) al igual que cuando creamos una instancia y asignamos valores a las propiedades. Sin embargo, las propiedades de tipo se consultan y establecen el valor de las propiedades en el tipo, no en una instancia de ese tipo.
El siguiente es el ejemplo de uso de la propiedad de tipo en el lenguaje de programación swift.
struct typerepo {
static var msg = «Bienvenido»
}
print(typerepo.msg)
typerepo.msg = «Bienvenido a Tutlane»
print(typerepo.msg)
Si observas el ejemplo anterior creamos la propiedad type y establecemos el valor directamente utilizando una instancia de ese type.