此方法出现错误:
func stringFromProduct(product: SPTProduct) -> String {
switch product {
case SPTProductFree:
return "Free"
case SPTProductPremium:
return "Premium"
case SPTProductUnlimited:
return "Unlimited"
default:
return "Unknown"
}
}
它们出现在SPTProductFree,SPTProductPremium和SPTProductUnlimited。
然而,在我正在使用的框架的头文件中,这被声明:
typedef NS_ENUM(NSUInteger, SPTProduct) {
SPTProductFree,
SPTProductUnlimited,
SPTProductPremium,
SPTProductUnknown
};
我的桥接文件设置正确,但它仍然说它是一个未解析的标识符。
谢谢!
答案 0 :(得分:2)
来自"中的Interacting with C APIs;使用Swift with Cocoa和Objective-C"参考:
Swift将标有
NS_ENUM
宏的任何C枚举导入为具有Int
原始值类型的Swift枚举。 C枚举案例名称的前缀在导入Swift时会被删除,无论它们是在系统框架中定义还是在自定义代码中定义。
所以你的Objective-C枚举被导入到Swift中
public enum SPTProduct : UInt {
case Free
case Unlimited
case Premium
case Unknown
}
您可以通过使用"生成的界面"菜单项 在包含定义的Objective-C头文件上。
因此,您可以使用Swift作为
func stringFromProduct(product: SPTProduct) -> String {
switch product {
case .Free:
return "Free"
case .Premium:
return "Premium"
case .Unlimited:
return "Unlimited"
default:
return "Unknown"
}
}