Проблема инициализации подкласса UNNotificationCategory

Я хочу подкласс UNNotificationCategory(UserNotifications), потому что я хочу использовать перечисления вместо жестко закодированных строк в качестве идентификаторов категории. Внутри есть одна удобная инициация UNNotificationCategory определение

public convenience init(identifier: String, actions: [UNNotificationAction], intentIdentifiers: [String], options: UNNotificationCategoryOptions = [])

Я не могу написать инициализатор для моего подкласса. Я понимаю, что не могу назначить инициализатор внутри подкласса, потому что я хочу вызвать вспомогательный init суперкласса. Но мое удобство init также вызывает ошибку компилятора.

Вот код:

enum PushNotificationCategoryIdentifier:String {
}    

convenience init(categoryIdentifier:PushNotificationCategoryIdentifier, actions:[UNNotificationAction], intentIdentifiers:[String], options: UNNotificationCategoryOptions) {
            self.init(identifier: categoryIdentifier.rawValue, actions: actions, intentIdentifiers: intentIdentifiers, options: options)
        }

Это приводит к ошибке: self.init не вызывается на всех путях до возврата из инициализатора

Я предполагаю, что это потому, что этот класс реализован в Objective-C и, возможно, они не вызвали назначенный инициализатор из удобного инициализатора (так как классы Objective-C не должны вызывать назначенный инициализатор из удобного инициализатора).

Но значит ли это, что я не могу подкласс UNNotificationCategory если я хочу написать инициализатор в нем?

1 ответ

Нет, ты можешь сделать это. Вы должны будете определить init() метод для этого. Прямо сейчас вы только определили convenience init(), Но вам придется определить init()в вашем подклассе. Когда вы пишете convenience init() это только для того, чтобы помочь инициализации простым способом, но вам все равно придется вызывать указанный init с синтаксисом init() от convenience init(), Вы можете прочитать это на официальной документации Apple

Другие вопросы по тегам