suzuki sport programaciĆ³n precio lenguaje apple swift

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.