sport - swift apple
Inicializador predeterminado en swift (2)
Creé una clase swift con opciones de cadena (¿Cadena?) E instalé la clase en un archivo swift diferente y obtuve un error de compilación. Cuando instalo la clase dentro del mismo archivo, no hay ningún error. ¿Hay algo mal que estoy haciendo? Revisé dos veces el comportamiento y este comportamiento es consistente incluso con la definición de clase dada en la documentación rápida:
class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
}
var item = ShoppingListItem()
Extracto de: Apple Inc. "El lenguaje de programación Swift". IBooks. https://itun.es/in/jEUH0.l
Si var item = ShoppingListItem()
se realiza en appDelegate.swift
, desde la función application:didFinishLaunchingWithOptions
obtenemos el error:
<class> cannot be initialised because it has no accessible initializers
OTOH, si mantenemos la instanciación tan pronto como finaliza la declaración de clase, no hay problema.
Edit: este problema no es un showstopper, el comportamiento inicial del inicializador predeterminado parece inconsistente o necesito entenderlo mejor
Lo más probable es que sea un problema con el compilador Swift y el control de acceso (no señalar con el dedo, solo intentar solucionar problemas). Agregue un inicializador explícito a la clase y vea si eso funciona:
class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
init() { }
}
Si eso no funciona, entonces configure la clase en público, junto con el inicializador
public class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
public init() { }
}
Proporcionar a todos los miembros un valor predeterminado, en este caso
var name: String? = nil
Corrige el error.