如何从测试目标中的objective-c代码访问主目标中的swift代码?

时间:2016-04-26 08:14:44

标签: objective-c xcode swift2 interop xcode7.3

我有NSObject的快速班级后裔,并标有@objc。我完成了Apple doc about interoperability中描述的所有内容以及关于堆栈溢出的大量问题。我的 Xcode-generated header TargetName-Swift.h)由Xcode 创建(我肯定知道它 - 它在派生数据文件夹中,我可以访问swift来自objc的同一目标中的代码,导入TargetName-Swift.h)。但是,我无法从单元测试目标中访问 Xcode-generated header 。 Xcode抱怨#import <ProductName/ProductModuleName-Swift.h> file not found。我已多次检查产品/模块名称 - 它们是正确的。

即使在使用Xcode 7.3创建的新项目中也找不到它。 (尽管设置Defines moduleYES,声明swift类public,@ objc和NSObject / ViewController / etc的后代)

我做错了什么?它可能是Xcode中的一个错误吗?

1 个答案:

答案 0 :(得分:0)

似乎从不同目标中的objective-c代码访问swift代码的唯一方法是在目标c代码所在的目标中将Xcode-generated header添加到User Header Search Path

如果你的swift代码在主目标中,而在目标c中,你可以使用$(CONFIGURATION_TEMP_DIR)/$(PROJECT_NAME).build/DerivedSources。请注意,此路径假定您的主目标与Project name具有相同的名称(在大多数情况下,它是真的,因为默认情况下Xcode会创建这样的名称)。