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()
    }
}

questionAnswers(8)

yourAnswerToTheQuestion