2017-01-26 4 views
1

Я работаю над большим проектом 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'.

+0

Какую версию CocoaPods вы используете? – redent84

+0

@ redent84 1.1.1 – Sti

+0

Вы импортируете модуль, содержащий перечисление в вашем файле Swift? – redent84

ответ

2

Используя CocoaPods 1.0+, фреймворки скомпилированы как динамические фреймворки и должны быть импортированы для использования.

Попробуйте добавить инструкцию import в свой файл Swift. Например, если CocoaPod назван MyModule:

В Swift:

import MyModule 

или Objective-C

@import MyModule; 

В верхней части файла расширений.

+0

Ваш комментарий мне тоже помогает –

Смежные вопросы