gpt4 book ai didi

objective-c - 如何从目标文件访问 swift 文件,而它们都在单元测试中?

转载 作者:搜寻专家 更新时间:2023-11-01 05:31:57 26 4
gpt4 key购买 nike

这个问题可能还困扰着很多人,但是这个问题目前还没有答案。

我有 2 个文件,都在单元测试目录中。
1. NSError 的快速扩展。让我们称之为 NSErrorExtension.swift。此扩展包含一些静态方法。
2. 一个客观的 C 测试类,我们称之为 UnitTest1.m

现在,我想从 UnitTest1.m 访问 NSErrorExtension.swift 中的静态方法。我该怎么做呢?它只是告诉我“没有已知的选择器类方法......”我尝试了很多解决方案,但没有一个有效。

最佳答案

遇到同样的问题,似乎 MyAppTests-Swift.h 不是很“可移植”:)

我不得不求助于一些不太好的解决方法来完成这项工作。对于类实例化,我使用了 NSClassFromString(),然后转换为在 Objective-C 端可见的协议(protocol)。对于您的扩展,您可以通过在头文件中声明方法来做类似的事情,而不是实际实现它们。

假设你的 NSErrorExtension.swift 扩展看起来像这样:

extension NSError {
@objc func someFunc() -> SomeResult
}

,你可以创建一个NSErrorExtension.h文件(没有相应的.m文件):

@interface NSError (UnitTestExtensions)
- (SomeResult *)someFunc;
@end

这应该使该函数在 Objective-C 端可用。不利之处在于,您需要为每个要从单元测试的 Swift 端公开的函数执行此操作。

关于objective-c - 如何从目标文件访问 swift 文件,而它们都在单元测试中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56860075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com