【发布时间】:2016-03-24 09:45:59
【问题描述】:
我正在将一个 Objective-C 应用程序转换为 Swift 并使用现有的 Objective-C 单元测试来确认更改是否正常工作。
我用 Swift 替换了几个 Objective-C 应用程序文件并执行了以下操作:
- 在需要的地方添加了“@objc 类”(除了从 Objective-C 类),
- 将 Swift 文件定位到 MyApp 和 MyAppTest 目标,
- 为两个目标设置“启用可测试性是”(仅限调试)。
- 在单元测试文件中,我添加了#import "MyAppTests-Swift.h" 并删除了#import "MyObjcClass.h"。
- 我还从构建阶段编译源列表中删除了“MyObjcClass.m”。
Xcode 生成“MyAppTests-Swift.h”文件。检查生成的文件(cmd-click),揭示了通常的大量 Swift 特定的#if #defines,它位于我的 Swift 类应该位于但不是的位置之前。
应用将使用替换的 Swift 文件构建和运行。应用程序中还有其他 Objective-C 文件导入“MyApp-Swift.h 以使用我的 Swift 类”。 MyApp-Swift.h" 文件包含通常大量的 Swift 特定 #if #defines 和 Swift 应用程序文件中的 Swift 类。
Xcode 为两个目标生成“-Swift.h”文件。然而,出于某种原因,Tests 目标的那个没有收到 Swift 类信息,而 app 目标的那个却收到了。因此,使用特定于 Swift 而不是 Objective-C 的功能不是问题。
我已经消除了所有编译错误,从 clean 构建但仍然无法正常工作。
有什么建议吗?
我正在使用 XC7 (7C68) iOS 9.1
【问题讨论】:
标签: ios xcode swift xcode7 xctest