Xcode 15 Beta中无法找到#unwrap宏的技术问询
#unwrap宏在Xcode 15中无法使用的原因及解决办法
- WWDC23会议上展示的
#unwrap宏仅为演示用途,并未被正式内置到Xcode 15或其附带的官方框架中,所以直接调用let url = #unwrap(URL(string: "my-awsome-url.tld"))会出现“No macro named 'unwrap'”的错误。 - 如果你觉得这个宏实用,可以自行实现一个功能类似的宏,示例如下:
首先定义宏的声明:
接着编写对应的宏实现逻辑,可根据需求处理解包失败的情况——比如触发编译错误、抛出运行时断言等。@freestanding(expression) public macro unwrap<T>(_ value: T?) -> T = #externalMacro(module: "UnwrapMacroImpl", type: "UnwrapMacro") - 不想自定义宏的话,也可以用传统写法替代:比如使用
guard let做安全解包并处理空值情况,或者用!强制解包(需注意强制解包可能引发运行时崩溃,确保值非nil时再用)。
内容的提问来源于stack exchange,提问作者Tobonaut
相关产品推荐
相关产品推荐

