Свойство хэшируемой структуры не может быть согласовано с LocalizedStringKey

#swift #swiftui #xcode13

Вопрос:

У меня есть эта структура, которую я использую для своих уведомлений, я пытаюсь преобразовать заголовок свойства в LocalizedStringKey, однако я получаю предупреждение «Тип», которое не соответствует ошибке «Хэшируемый протокол».

 public struct Alert: Hashable {

    // MARK: - properties
    
    public let title: String
    public let registryID: UUID
    public let dateComponents: DateComponents
    public let sound: String?
    public let repeats: Bool
    
    // MARK: - Init amp; Dealloc
    
    public init(title: String,
                registryID: UUID,
                dateComponents: DateComponents,
                timezone: TimeZone? = nil,
                sound: String? = nil,
                repeats: Bool = false) {
        self.title = title
        self.registryID = registryID
        self.dateComponents = dateComponents
        self.sound = sound
        self.repeats = repeats
    }
}
 

Вот как я определяю пользовательское действие

         let alertScheduler = UNUserNotificationCenter.current()
        // Define the custom actions
        let doneAction = UNNotificationAction(identifier: "DONE_ACTION",
                                              title: "Done",
                                              options: [])
        // Define the notification type
        let actionCategory = UNNotificationCategory(identifier: "DONE_ACTION_NOTIFIER",
                                                    actions: [doneAction],
                                                    intentIdentifiers: [],
                                                    hiddenPreviewsBodyPlaceholder: "",
                                                    options: .customDismissAction)
        alertScheduler.setNotificationCategories([actionCategory])
 

Поскольку я не смог найти практически никакой информации об этом, когда я определял пользовательское действие, я изменил заголовок следующим образом:

         let doneAction = UNNotificationAction(identifier: "DONE_ACTION",
                                              title: LocalizedStringKey("Done"),
                                              options: [])
 

Что дает мне ошибку»Не удается преобразовать значение типа «LocalizedStringKey» в ожидаемый тип аргумента «Строка»»

Могу ли я как-нибудь это сделать? В видео WWDC21 о LocalizedStringKeys они локализуют переменную, let title: LocalizedStringKey и это сделано, но протокол хэширования, похоже, вызывает некоторые проблемы.

Комментарии:

1. Я не думаю, что уведомления пользователей поддерживают LocalizedStringKey . Вероятно, вам следует использовать NSLocalisedString для создания локализованной строки.