R.swift在SPM环境下无法生成xib与storyboard资源,求解决方案
SPM迁移R.swift xib/storyboard类型找不到问题的解决建议
- 检查SPM目标依赖关联:确保包含xib/storyboard的模块,已将对应视图/视图控制器所在的代码目标添加为依赖。R.swift生成代码时需要访问这些类型定义,SPM默认可能未正确建立关联。
- 验证R.swift命令参数:调用
RswiftGenerateResourcesCommand时,确认指定了正确的--access-level(如public),生成的R代码访问级别需与视图类型匹配;同时检查是否添加了--module参数明确当前模块名,避免跨模块类型查找失败。 - 清理缓存重新生成:
- 删除Xcode的Derived Data目录,彻底清理缓存
- 手动删除已生成的
R.generated.swift文件 - 重新执行
RswiftGenerateResourcesCommand和RswiftModifyXcodePackages命令,留意命令执行时是否有报错信息
- 检查xib/storyboard的类关联:打开对应文件,确认File's Owner或Custom Class的类名拼写完全正确,且在Identity Inspector的Module下拉框中选择当前模块(不要选Inherit From Target)。
- 确认SPM资源包含规则:在
Package.swift中,确保xib/storyboard文件被正确纳入资源配置,示例:targets: [ .target( name: "YourModule", resources: [ .process("Resources/"), .copy("Resources/**/*.xib"), .copy("Resources/**/*.storyboard") ] ) ] - 检查跨模块访问权限:如果视图/视图控制器在另一个SPM包中,确保该包已被添加为当前包的依赖,且目标类型的访问级别设为
public。
内容的提问来源于stack exchange,提问作者Olexantor
相关产品推荐
相关产品推荐

