Есть ли способ объявить имена уведомлений, не повторяя себя? - PullRequest
0 голосов
/ 01 декабря 2018

При объявлении имен уведомлений есть ли способ избежать подобных ошибок?

extension Notification.Name {
    static let userHasLoggedIn = Notification.Name("userHasLoggedIn")
    //oops! developer forgot to change the literal...
    static let userHasLoggedOut = Notification.Name("userHasLoggedIn")
}

Я надеюсь, что какой-нибудь способ использовать имя переменной в качестве имени уведомления без необходимости повторного вводаЭто.Как то так:

extension Notification.Name {
    //wishful thinking??
    static let userHasLoggedIn = Notification.Name(#fieldname)
    static let userHasLoggedOut = Notification.Name(#fieldname)
}

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Вы можете использовать Sourcery .

Я не использовал его, но это генератор кода, который использует шаблоны для генерации шаблонного кода.

Вы можете создать шаблонили правило (извините, не знаю реальных терминов), которое конвертирует userHasLoggedIn в static let userHasLoggedIn = Notification.Name("userHasLoggedIn").

0 голосов
/ 01 декабря 2018

Вы можете использовать перечислители со строкой, например:

enum Names: String {
    case logIn = "userHasLoggedIn"
    case logOut = "userHasLoggedOut"
}

Тогда в своем коде вы можете сказать:

static let userHasLoggedIn = Notification.Name(Names.logIn.rawValue)
static let userHasLoggedOut = Notification.Name(Names.logOut.rawValue)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...