1

サブタイトルUNNotificationCategory(UserNotifications)は、カテゴリ識別子としてハードコードされた文字列の代わりにenumを使用したいからです。 UNNotificationCategory定義UNNotificationCategoryサブクラスinit発行

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

内部の1つの利便initが、私は私のサブクラスの初期化子を書くことができないですがあります。 スーパークラスのコンビニエンスinitを呼びたいので、私はサブクラス内でイニシャライザを指定できません。しかし、私の利便性のinitもcomplierエラーを投げている。ここで

は、コードは次のとおりです。

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クラスは、便利な初期化子から指定された初期化子を呼び出す必要はありません)、彼らは便利な初期化子から指定された初期化子を呼び出していないかもしれません。

これで、初期化子を書きたい場合は、UNNotificationCategoryをサブクラス化できませんか?

答えて

0

いいえこれはできます。これにはinit()メソッドを定義する必要があります。今のところconvenience init()しか定義されていません。しかし、サブクラスでinit()を定義する必要があります。 convenience init()を書くときは、簡単な方法で初期化に役立ちますが、convenience init()の構文init()で指定されたinitを呼び出す必要があります。 あなたはそれを読むことができますApple Official Documentation

+0

何でinitを定義しますか?私はUNNotificationCategory変数を初期化することはできません。すべてがプロパティのみを取得するからです。 –

関連する問題