Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

iOS: Créez une classe d'objets en utilisant Swift

J'ai créé cette classe pour mon objet City


class City: NSObject {

var _name:String = ""
var name:String {
get {
return _name
}
set /newVal/ {
_name = newVal
}
}
}


Ensuite, quand je crée mon propre objet, je le fais:


var city:City!

city.name = "London" //crash here

println/"name city is\/city.name/"/;


Il tombe quand j'installe un nom avec le message "fatal error: unexpectedly found nil while unwrapping an Optional value"
Invité:

Hippolite

Confirmation de:

En fait, ce n'est pas une réponse /Voir d'autres réponses à résoudre, tels que @Greg's et @zelib's/,, Mais une tentative de réparer certaines erreurs que je vois dans votre code

Pas besoin de créer calculé + Propriété sauvée /Si seulement vous n'avez pas pour cette raison/:


class City: NSObject {
var name: String = ""
}


Si vous héritez de
NSObject

, Vous perdez automatiquement toutes les fonctions de Swift-Évitez cela /Si vous n'avez pas pour cette raison/


class City {
var name: String = ""
}


Vous utilisez une chaîne vide comme un manque de valeur-swift fournit à cette question supplémentaire.
https://developer.apple.com/li ... ID330

class City {
var name: String?
}


Alternative 3. La ville sans nom n'a pas beaucoup de sens, vous voulez probablement que chaque instance soit un nom. Utilisez la propriété en option et l'initialiseur:


class City {
var name: String
init/name: String/ {
self.name = name
}
}


Évitez les options implicitement déployées /Si seulement vous n'avez pas pour cette raison/:


var city: City

Giselle

Confirmation de:

Comme tout autre langage de programmation orienté objet, l'objet doit être initialisé avant de l'appeler.

Aimer:



var city:City


Ceci est juste une référence à l'objet. Ainsi, la mémoire réelle n'est pas créée. Vous devez créer un véritable objet pour la classe. City.

Corrigez-le en ajoutant l'assertion suivante:


city = City//

Camille

Confirmation de:

Vous n'avez pas initialisé la variable city, Et quand vous essayez de l'utiliser, il va crancer.

D'abord l'initialiser avant d'utiliser:


city = City//
city.name = "London"

Babette

Confirmation de:

Vous obtenez une erreur car vous n'initialisez pas la variable city, Et simplement implicitement implicitement, sans initialisation à aucun stade. Pour l'initialiser, vous devez utiliser le code suivant.


var city:City = City//

Georges

Confirmation de:

Vous devez appeler la méthode init. Donc tu le ferais comme ça :


var city:City=City// //Calls init and creates an instance
city.name="foo"


Si vous ne définissez pas la méthode init/C'est toujours une bonne pratique./, La méthode est appelée init défaut.

Eugene

Confirmation de:

Créer un objet avec la valeur


var cityName = City/"cityName"/// create a object with string value

Pour répondre aux questions, connectez-vous ou registre