Swift 5.9与Xcode15中@CaseDetection及@Observable宏的获取问题
@CaseDetection与@Observable宏的使用解决方案
@Observable的使用
@Observable是Xcode15正式版(对应Swift 5.9)内置的SwiftUI宏,直接使用即可,注意两个前提:
- 确保项目的Swift版本设置为5.9及以上
- 在代码顶部导入
import SwiftUI,之后就能在类或结构体上标记@Observable启用观察功能
@CaseDetection的实现(非内置宏)
WWDC2023演示中的@CaseDetection是自定义宏示例,并非Swift原生内置功能,需要自行实现。结合你找到的关键步骤,完整流程如下:
- 创建编译器插件
必须先注册宏,让Xcode能识别到它:
@main struct CaseDetectionPlugin: CompilerPlugin { let providingMacros: [Macro.Type] = [CaseDetectionMacro.self,] }
- 实现宏的核心逻辑
需要编写CaseDetectionMacro的具体代码,用来为枚举自动生成判断case的布尔属性。另外建议将生成的属性声明为public,示例生成的代码结构如下:
public var is(raw: uppercased): Bool { if case .(raw: original) = self { true } else { false } }
- 项目依赖配置
自定义宏需要放在独立的Swift Package模块中,之后让主项目依赖这个Package,才能在业务代码里正常使用@CaseDetection标记枚举。
内容的提问来源于stack exchange,提问作者Phantom59
相关产品推荐
相关产品推荐

