У меня есть struct для моих локальных уведомлений, с init
, который входит в localizable.strings и назначает значение, соответствующее key
, телу уведомления :
struct Notification {
let identifier: String
let body: String
init(withKey: String) {
self.id = key
self.body = NSString.localizedUserNotificationString(forKey: key, arguments: nil)
}
Так что, если мои localizable.strings будут выглядеть так:
"testKey" = "Test Notification";
Тогда при инициализации нового Notification
объекта получится следующее:
let notification = Notification(withKey: "testKey")
print(notification.body) // prints "Test Notification"
Однако, если я инициализирую уведомление с опечаткой, тело будет просто неправильно введенным ключом:
let mistypedNotification = Notification(withKey: "tstKey")
print(mistypedNotification.body) // prints "tstKey"
Мое желаемое поведение - чтобы строка default была назначена телу уведомления, если инициализатор вызывается с ключом, которого в настоящее время нет в localizable.strings , как показано ниже:
let desiredNotification = Notification(withKey: "keyNotCurrentlyInLocalizableFile")
print(desiredNotification.body) // prints "default string"
Я знаю, что этого можно добиться с помощью одного из NSLocalizedString
инициализаторов, но при этом я бы отказался от преимуществ использования NSString.localizedUserNotificationString
, чего я не хочу делать. Есть ли способ достичь желаемого поведения, не нажимая NSLocalizedString
?