1

Ich möchte UNNotificationCategory (UserNotifications) Unterklasse, weil ich Enums anstelle von fest codierten Zeichenfolgen als Kategorie-IDs verwenden möchten. Es ist eine Bequemlichkeit init innerhalb UNNotificationCategory DefinitionUNNotificationCategory Unterklasse Initialisierung

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

Ich bin nicht in der Lage einen Initialisierer für meine Unterklasse zu schreiben. Ich verstehe, ich kann Initialisierer in der Unterklasse nicht benannt haben, weil ich die Bequemlichkeit Init der Oberklasse nennen möchte. Aber meine Bequemlichkeit init wirft auch Compier Fehler.

Hier ist der Code:

enum PushNotificationCategoryIdentifier:String { 
}  

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

Dies wird in Fehler führt: self.init ist nicht auf allen Pfaden aufgerufen, bevor von initializer Rückkehr

Ich denke, das liegt daran, dass diese Klasse implementiert wird in Objective-C und möglicherweise haben sie den benannten Initailizer nicht aus dem Convenience-Initailizer aufgerufen (da Objective-C-Klassen nicht den designierten Initialisierer von Convenience Initailizer aufrufen müssen).

Bedeutet das aber, dass ich UNNotificationCategory nicht ableiten kann, wenn ich einen Initialisierer darin schreiben möchte?

Antwort

0

Nein, Sie können dies tun. Sie müssen hierfür die Methode init() definieren. Im Moment haben Sie nur convenience init() definiert. Aber Sie müssen init() in Ihrer Unterklasse definieren. Wenn Sie eine convenience init() schreiben, ist es nur da, um die Initialisierung auf eine einfache Weise zu helfen, aber Sie müssen immer designated init mit der Syntax init() von convenience init() aufrufen. Sie können es lesen Apple Official Documentation

+0

Definieren von Init mit was? Ich kann UNNotificationCategory-Variablen nicht initialisieren, da alle nur Eigenschaften erhalten. –

Verwandte Themen