Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Swift生成的具有多个目标的标题_Objective C_Swift - Fatal编程技术网

Objective c Swift生成的具有多个目标的标题

Objective c Swift生成的具有多个目标的标题,objective-c,swift,Objective C,Swift,当存在多个具有公共代码的目标时,我无法生成使用ObjC中的swift类所需的swift头 我创建了两个目标我的OSX应用程序和我的iOS应用程序。当ObjC类调用Swift类时,这些目标共享公共代码 如中所述,我可以添加#将“My_iOS_App-Swift.h”导入我的ObjC类,并从我的iOS App目标编译它 但是,由于include需要与模块名匹配,因此它不能从myosx应用程序目标编译。它正在寻找#导入“My_OSX_App-Swift.h”,但通用代码不使用该include 在多个目

当存在多个具有公共代码的目标时,我无法生成使用ObjC中的swift类所需的swift头

我创建了两个目标
我的OSX应用程序
我的iOS应用程序
。当ObjC类调用Swift类时,这些目标共享公共代码

如中所述,我可以添加
#将“My_iOS_App-Swift.h”
导入我的ObjC类,并从
我的iOS App
目标编译它

但是,由于include需要与模块名匹配,因此它不能从
myosx应用程序
目标编译。它正在寻找
#导入“My_OSX_App-Swift.h”
,但通用代码不使用该include

在多个目标之间共享的代码中,混合/匹配Swift/ObjC的正确方法是什么?我可以手动更改每个目标以使用通用的
MyApp Swift.h
,但这样做感觉不正确,可能会导致其他问题。

在构建设置中设置产品模块名称,使其在所有模块中都相同

例如:$(项目名称)

或者,如果您有针对不同目标(如:主应用程序和Watchkit)的手表扩展,请使用固定名称

这会导致生成的###-Swift.h文件在所有模块中具有相同的名称。这也消除了添加/检查预处理器微型计算机的需要

From:

将生成设置中的产品模块名称设置设置为跨模块相同

例如:$(项目名称)

或者,如果您有针对不同目标(如:主应用程序和Watchkit)的手表扩展,请使用固定名称

这会导致生成的###-Swift.h文件在所有模块中具有相同的名称。这也消除了添加/检查预处理器微型计算机的需要


From:

对于非平台特定的代码,使用pod或模块。它不应该通过
My\u iOS\u App-Swift.h
MyApp-Swift.h
。它应该由MyLibrary Swift.h提供,是的,这是有道理的,但是我继承了这个项目,它不是这样建立的。我是否可以手动更改生成的-Swift.h的名称,以便每个目标使用相同的名称而不会造成问题?目前,重组项目以使用库可能会有太多的变化。(我愿意接受你的答案,但不能从评论中得出)使用pod或模块来编写非平台特定的代码。它不应该通过
My\u iOS\u App-Swift.h
MyApp-Swift.h
。它应该由MyLibrary Swift.h提供,是的,这是有道理的,但是我继承了这个项目,它不是这样建立的。我是否可以手动更改生成的-Swift.h的名称,以便每个目标使用相同的名称而不会造成问题?目前,重组项目以使用库可能会有太多的变化。(我愿意接受你的回答,但无法从评论中获得答案)