Проблема инициализации подкласса 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