Я работаю над большим проектом iOS, созданным в Swift 2.3, который использует некоторые частные CocoaPods (v.1.1.1). В одном из контейнеров (в Objective-C) он имеет файл с именем Enums.h
. Этот файл содержит например этот код:Использование необъявленного типа при обновлении до Swift 3
typedef NS_ENUM(NSInteger, MyEnum){
MyEnumOne,
MyEnumTwo
};
В моем приложении (Swift 2,3) У меня есть несколько расширений, реализованных для перечислений, таких как эта. Например, этот пример:
extension MyEnum{
func name()->String{
return "some name"
}
}
Это, очевидно, лишь небольшой пример того, что на самом деле происходит, но вы получаете эту идею.
Теперь я пытаюсь запустить проект Swift 3.0 и использовать собственное преобразование Xcode. Мой код теперь пронизан ошибками, но это ожидалось. Тем не менее, я не знаю, как исправить эту ошибку:
Xcode теперь отмечает первую строку файла расширения: extension MyEnum{
с красной ошибкой и говорит Use of undeclared type 'MyEnum'
. Если я CMD + щелкните по имени MyEnum
, я получаю направленный на перечисление внутри своего коко-порта, где он объявлен. Почему Xcode говорит мне, что он не объявлен? Это отлично работает в Swift 2.3.
Когда я обновил версию Swift и попытался обновить стручки, cocoapods жаловался, что мой подкайл не сказал use_frameworks!
, поэтому я добавил, что в. Может ли это быть причиной ошибки?
Edit: Даже внутри name()
-функции в моем разгибания файл (который теперь говорит: «Использование необъявленной типа»), я могу начать печатать self.
и получить автозаполнение-окно о том, что self
является экземпляром MyEnum
, и он показывает мне правильные значения, которые я могу использовать, например rawValue
. Xcode явно знает о моем Enum, но он все еще говорит Use of undeclared type 'MyEnum'
.
Какую версию CocoaPods вы используете? – redent84
@ redent84 1.1.1 – Sti
Вы импортируете модуль, содержащий перечисление в вашем файле Swift? – redent84