我正在研究一个在Swift 2.3中制作的大型iOS项目,它使用了一些私有的CocoaPods(v.1.1.1)。在其中一个pod(在Objective-C中制作)中,它有一个名为Enums.h
的文件。该文件包含例如以下代码:
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
,我会被定向到我的cocoapod内的枚举,确切地说它在哪里宣告。为什么Xcode告诉我它未声明?这在Swift 2.3中完全正常。
当我更新Swift版本并尝试更新pod时,cocoapods抱怨我的podfile没有说use_frameworks!
,所以我添加了。这会导致错误吗?
编辑:
即使在我的扩展名文件中的name()
- 函数内部(现在称为“使用未声明的类型”),我也可以开始输入self.
并获取自动完成窗口,说明{{1} }是self
的一个实例,它向我显示了我可以使用的正确值,例如MyEnum
。 Xcode清楚地知道我的Enum,但仍然说rawValue
。
答案 0 :(得分:2)
使用CocoaPods 1.0+,框架被编译为动态框架,必须导入才能使用。
尝试在您的Swift文件中添加state = state.copy(sampling=True)
语句。例如,如果CocoaPod名为import
:
在斯威夫特:
MyModule
或在Objective-C
import MyModule
在您的扩展程序文件的顶部。