UNNotificationCategory
カテゴリ識別子としてハードコードされた文字列の代わりに列挙型を使用したいので、(UserNotifications)をサブクラス化します。UNNotificationCategory
定義内に便利な init が 1 つあります。
public convenience init(identifier: String, actions: [UNNotificationAction], intentIdentifiers: [String], options: UNNotificationCategoryOptions = [])
サブクラスのイニシャライザを記述できません。スーパークラスの便利な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
しかし、初期化子を書きたい場合、サブクラス化できないということですか?