【问题标题】:Regenerating the Bridging-Header and -Swift.h files after project name change项目名称更改后重新生成 Bridging-Header 和 -Swift.h 文件
【发布时间】:2015-06-07 21:58:02
【问题描述】:

我之前构建了一个包含 Swift 和 Objective C 组件的键盘扩展项目。我想基于我以前的应用程序构建一个新的键盘应用程序,其简单目标是更改名称、键盘 UI 和一些键盘力学。

我遵循here 关于复制和重命名 XCode 项目的指导方针。我什至设法在更改 Bundle ID(对于容器应用程序和底层键盘)后编译项目。但是,由于 Targets 的名称现在已更改,我收到以下文件的错误消息:

#import "NewNameContainerApp-Swift.h"
#import "NewNameContainerApp-Bridging-Header.h"

找不到(尽管我手动将OldNameContainerApp-Bridging-Header.h 更改为NewNameContainerApp-Bridging-Header.h,但这些错误仍然存​​在。似乎该项目没有重新生成一组新的桥接头和-Swift.h 与我的新目标名称匹配的文件。

我的问题是 - 有没有办法强制 XCode 重新生成一组新的这些文件?如果没有,我在哪里可以找到OldNameContainerApp-Swift.h,以便我可以手动将其更改为NewNameContainerApp-Swift.h

谢谢!

【问题讨论】:

  • 检查您的构建设置并定义模块。

标签: ios xcode swift keyboard ios-keyboard-extension


【解决方案1】:

在构建部分检查您的应用程序Define-Module。将其更新为您的最新项目名称。要轻松找到它,只需搜索 Defines-Module 并查看它是否需要更新。如果它已更新,请尝试清理您的项目或删除您的 Derived Data

【讨论】:

  • 感谢您的建议!在新应用中定义模块设置为“是”,派生数据已被删除,但不幸的是问题仍然存在。
  • 有变更前的项目快照吗?通常通过更改项目名称,xcode 会创建项目的快照。如果您只是想更改应用程序的名称,则可以在 info.plist 中进行。
  • 确实是这样,而且很好。我实际上是在创建一个全新的应用程序,因此也必须更改 Bundle ID,这最初是导致问题的原因。我设法找到了一个解决方法,其中容器应用程序的包 ID 被修改,但扩展包 ID 保留了原始应用程序名称的一部分,这让它可以工作。
【解决方案2】:

我没有发现强制 Xcode 重新生成这些文件的方法。删除它们只会导致构建失败。唯一可靠的方法是进行干净的构建,或者删除 DerivedData 并重新构建(实际上是相同的解决方案)。

重命名 Objective-C/Swift 混合应用时,必须执行以下额外更改才能成功构建。

Swift to Objective-C 头文件取决于模块名称:

<ModuleName>-Swift.h

因此,如果模块名称更改,您需要更改代码中的import。在构建设置中搜索 Product Module Name 以查找正在使用的模块名称。

Objective-C 到 Swift 的桥接头名称取决于构建设置 Objective-C Bridging Header。检查 Xcode 目标构建设置并修改以匹配您的新名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-16
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多