Предоставленное вами сообщение об ошибке указывает на то, что для метода экземпляра, отмеченного @objcв расширении подкласса RouteOptions, требуется iOS 13.0.0 или более поздняя версия в Swift. Эта ошибка обычно возникает, когда вы используете функцию или синтаксис, доступные только в iOS 13.0.0 или более поздней версии, но в качестве цели развертывания установлена более ранняя версия iOS.
Чтобы решить эту проблему, у вас есть несколько вариантов:
-
Обновить цель развертывания: вы можете обновить цель развертывания до iOS 13.0.0 или более поздней версии в настройках проекта Xcode. Это позволит вам без проблем использовать метод экземпляра
@objcв расширении. Вот как вы можете обновить цель развертывания:- Выберите свой проект в Навигаторе проектов.
- Выберите цель в разделе «Цели».
- Перейдите на вкладку «Общие».
- Обновите «Цель развертывания» до iOS 13.0.0 или более поздней версии.
-
Удалить атрибут @objc. Если атрибут
@objcне является необходимым для метода экземпляра в расширении, вы можете удалить его. Это позволит вам использовать метод без требований iOS 13.0.0. Вот пример:extension YourSubclassOfRouteOptions { func yourMethod() { // Your method implementation } } -
Условная компиляция. Если вам необходимо поддерживать несколько версий iOS и метод экземпляра
@objcимеет решающее значение, вы можете использовать условную компиляцию, чтобы условно включить метод на основе версии iOS. Вот пример:extension YourSubclassOfRouteOptions { @available(iOS 13.0, *) @objc func yourMethod() { // Your method implementation } }
Вот несколько возможных решений возникшей ошибки. Не забудьте выбрать подход, который лучше всего соответствует вашим требованиям и минимальной версии iOS, которую вы хотите поддерживать.