"Use of unresolved identifier"错误,但我在框架中声明了标识符


错误

出现在此方法中:

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"
    }
}

最新更新