提问人:bodich 提问时间:9/15/2023 最后编辑:bodich 更新时间:9/19/2023 访问量:81
如何在 Swift 5.9 Macro 中访问应用程序的 Bundle.main 或 info.plist?
How to get access to the application's Bundle.main or info.plist in Swift 5.9 Macro?
问:
如何访问宏中应用程序的 Bundle.main?基本上我需要阅读 info.plist。更具体地说,我在那里有链接到我的道具的道具,并希望在编译时读取和验证配置。.xcconfig
我试过:
let bundle = Bundle.main
并获取宏本身的捆绑包
我也试过:
let bundle = Bundle(identifier: "com.myorg.AppName")
//"com.myorg.AppName" is the correct identifier of my app bundle, which I've double checked from the app itself
并获得nil
有什么方法可以在宏中获取应用程序的 bundle/info.plist? 我们不能只是将对象传递给宏 props,因为它是预编译操作。
答:
0赞
Soumya Mahunt
9/19/2023
#1
在此处使用宏时,需要注意以下几种情况:
宏在编译时运行,而 bundle 仅在运行最终编译的应用程序时可用。因此,宏不能在此处使用捆绑包,因为在编译过程中它不可用。
您的下一个选择是使用当前文件系统访问文件,但截至目前,宏无法访问文件系统,但计划在未来添加以下内容:
宏扩展操作是异步的,以考虑最终将添加到 中的潜在异步操作。例如,需要与编译器进行额外通信以获取子表达式类型、访问程序中的文件等的操作。
MacroExpansionContext
因此,到目前为止,您的选择是改用 swift 包插件,创建一个构建工具插件,在应用程序的构建阶段执行验证。您可以获得有关如何实现所需目标的以下资源的更多详细信息:
评论