出现在此方法中:
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
};
我的桥接文件设置正确,但它仍然说它是一个未解析的标识符。
谢谢!
摘自 "Using Swift with Cocoa and Objective-C" 参考中的 与 C API 交互:
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"
}
}