Prática recomendada para implementar um inicializador disponível no Swift
Com o código a seguir, tento definir uma classe de modelo simples e seu inicializador disponível, que usa um dicionário (json-) como parâmetro. O inicializador deve retornarnil
se o nome de usuário não estiver definido no json original.
1. Por que o código não é compilado? A mensagem de erro diz:
Todas as propriedades armazenadas de uma instância de classe devem ser inicializadas antes de retornar nulo de um inicializador.
Isso não faz sentido. Por que devo inicializar essas propriedades quando pretendo retornarnil
?
2. Minha abordagem é a correta ou haveria outras idéias ou padrões comuns para alcançar meu objetivo?
class User: NSObject {
let userName: String
let isSuperUser: Bool = false
let someDetails: [String]?
init?(dictionary: NSDictionary) {
if let value: String = dictionary["user_name"] as? String {
userName = value
}
else {
return nil
}
if let value: Bool = dictionary["super_user"] as? Bool {
isSuperUser = value
}
someDetails = dictionary["some_details"] as? Array
super.init()
}
}