You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Objective-C中访问Swift定义的嵌套enum

核心原因

Objective-C 本身没有嵌套枚举的语法支持,Swift 中标记了 @objc 的嵌套枚举导出到 Objective-C 时,会自动做名称平铺处理,拼接规则为 父枚举名称 + 子枚举名称 + 子枚举case名称。

正确访问写法

针对你给出的枚举定义,正确的访问方式如下:

// 访问子枚举case
PARENT_ENUMCHILD_ENUMCHILD_ENUM_CASE;

// 声明子枚举类型变量示例
PARENT_ENUMCHILD_ENUM childCase = PARENT_ENUMCHILD_ENUMCHILD_ENUM_CASE;
可选优化:自定义导出名称

如果觉得平铺后的名称太长,可以在 Swift 中通过 @objc(自定义名称) 注解指定枚举导出到 Objective-C 时的名字,示例如下:

@objc enum PARENT_ENUM: Int {    
    case test
        
    // 自定义子枚举导出到ObjC的类型名
    @objc(PARENT_CHILD_ENUM)
    enum CHILD_ENUM: Int{
        // 自定义case导出到ObjC的名字
        @objc(PARENT_CHILD_CASE)
        case CHILD_ENUM_CASE
    }        
}

修改后在 Objective-C 中可以直接用更简洁的名称访问:

PARENT_CHILD_CASE;
PARENT_CHILD_ENUM childCase = PARENT_CHILD_CASE;
验证方式

如果不确定导出后的名称,可以直接打开 Xcode 自动生成的 Swift-ObjC 桥接头文件(命名规则为 你的项目名-Swift.h),搜索父枚举/子枚举名称,即可看到完整的导出定义,直接复用即可。

内容的提问来源于stack exchange,提问作者Aaban Tariq Murtaza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:24:03