Разрешение ошибки «метод экземпляра @objc в расширении» в Swift

Предоставленное вами сообщение об ошибке указывает на то, что для метода экземпляра, отмеченного @objcв расширении подкласса RouteOptions, требуется iOS 13.0.0 или более поздняя версия в Swift. Эта ошибка обычно возникает, когда вы используете функцию или синтаксис, доступные только в iOS 13.0.0 или более поздней версии, но в качестве цели развертывания установлена ​​более ранняя версия iOS.

Чтобы решить эту проблему, у вас есть несколько вариантов:

  1. Обновить цель развертывания: вы можете обновить цель развертывания до iOS 13.0.0 или более поздней версии в настройках проекта Xcode. Это позволит вам без проблем использовать метод экземпляра @objcв расширении. Вот как вы можете обновить цель развертывания:

    • Выберите свой проект в Навигаторе проектов.
    • Выберите цель в разделе «Цели».
    • Перейдите на вкладку «Общие».
    • Обновите «Цель развертывания» до iOS 13.0.0 или более поздней версии.
  2. Удалить атрибут @objc. Если атрибут @objcне является необходимым для метода экземпляра в расширении, вы можете удалить его. Это позволит вам использовать метод без требований iOS 13.0.0. Вот пример:

    extension YourSubclassOfRouteOptions {
       func yourMethod() {
           // Your method implementation
       }
    }
  3. Условная компиляция. Если вам необходимо поддерживать несколько версий iOS и метод экземпляра @objcимеет решающее значение, вы можете использовать условную компиляцию, чтобы условно включить метод на основе версии iOS. Вот пример:

    extension YourSubclassOfRouteOptions {
       @available(iOS 13.0, *)
       @objc func yourMethod() {
           // Your method implementation
       }
    }

Вот несколько возможных решений возникшей ошибки. Не забудьте выбрать подход, который лучше всего соответствует вашим требованиям и минимальной версии iOS, которую вы хотите поддерживать.