我在 Xcode 项目中有两个目标:
- Objective-C 应用目标
- Swift UI 自动化目标
我想在自动化代码中使用的应用程序目标的头文件中有许多具有可访问性 ID 的全局常量,例如头文件包含:
static NSString *const APP_TUTORIAL_VIEW_ACI = @"tutorial_view";
static NSString *const APP_TUTORIAL_SCROLL_VIEW_ACI = @"tutorial_scroll_view";
但是如果我尝试在自动化 Swift 代码中访问例如 APP_TUTORIAL_VIEW_ACI
,它就找不到它。
我如何链接它以便可以在 Swift 自动化目标中使用全局常量?
最佳答案
- 通过添加临时 swift 文件在您的 Objective-C 目标中创建 Objective-C 桥接 header 文件。 Xcode 将提示您添加 Objective-C bridger 头文件。桥接头的名称将是
[YourTargetName]-Bridging-Header.h
在桥接头文件中添加常量文件:
#import "ConstantsHeader.h"
转到您的 Objective-C 目标的build设置。搜索“桥接”并从 SWIFT_OBJC_BRIDGING_HEADER 复制值
- 转到构建 Swift 测试目标的设置。再次搜索“桥接”并将复制的值粘贴到 Objective-C Bridging Header
您现在可以在 Swift Test Target 中直接使用常量。
func testExample() { let str = APP_TUTORIAL_VIEW_ACI XCTAssert(!str.isEmpty, "str should not be empty") XCTAssert(str == "tutorial_view", "str should match") // This is an example of a functional test case. // Use XCTAssert and related functions to verify your tests produce the correct results. }
关于ios - 在 ObjC 和 Swift 之间引用不同 Xcode 目标中的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45230216/