我想继承UNNotificationCategory
(UserNotifications),因为我想使用枚举而不是硬编码字符串作为类别标识符。
UNNotificationCategory
定义
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)
}
这导致错误:
我想这是因为这个类是在Objective-C中实现的,可能是他们没有从easy initailizer调用指定的initailizer(因为Objective-C类不必从easy initailizer调用指定的初始化器)。
但这是否意味着如果我想在其中编写初始化程序,我就无法继承UNNotificationCategory
?
答案 0 :(得分:0)
不,你能做到这一点。您必须为此定义init()
方法。现在你只定义了convenience init()
。但是您必须在子类中定义init()
。
当您编写convenience init()
时,它只是以简单的方式帮助初始化,但您仍然必须使用init()
中的语法convenience init()
来调用指定的init。
您可以在http://camel.apache.org/using-propertyplaceholder.html