Swift создает пользовательский инициализатор без параметров с пользовательским именем - PullRequest
0 голосов
/ 11 мая 2018

Я хочу создать init для моего класса, который может выглядеть примерно так:

initWithSomeMode{ // Not compilable
    self.init()
    self.customSetup()
}

Конечно код выше не будет работать, я просто хочу показать, чего я хочу достичь.

Я вижу только удобство init в классе Swift, но в этом случае мне нужно добавить параметры, но они мне не нужны.

Итак, я мог бы достичь этого с удобством, примерно так:

convenience init(foo: String?) {
        self.init()
        self.customSetup()
    }

Есть ли способ создать пользовательский init без параметров? Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Также обходной путь, но я склонен использовать это:

convenience init(withSomeMode: Void) {
    self.init()
    self.customSetup()
}

и затем:

YourClass.init(withSomeMode: ())

имеет некоторые преимущества перед статическим методом, например, более простое создание подклассов. Но да, все еще обходной путь.

0 голосов
/ 11 мая 2018

Вам необходимо создать static метод:

static func initWithSomeMode() -> YourClass {
    let obj = YourClass()
    obj.someCustomSetup()
    return obj
}

И тогда вы можете сделать это:

let yourClass = YourClass.initWithSomeMode()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...