Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Ios 在Objective-C模块中使用swift时,无法生成Objective-C模块_Ios_Objective C_Swift_Xcode_Bridging Header - Fatal编程技术网

Ios 在Objective-C模块中使用swift时,无法生成Objective-C模块

Ios 在Objective-C模块中使用swift时,无法生成Objective-C模块,ios,objective-c,swift,xcode,bridging-header,Ios,Objective C,Swift,Xcode,Bridging Header,在iOS应用程序中,我有一个子项目(不是cocoapods),其中包括一个swift文件和一个ObjC文件(swift文件使用)。XCode自动创建了一个桥接文件,但无法构建它,因为框架中不允许明显的桥接。我使用的解决方法是将objective-c头添加到伞形文件中,它成功了。现在我需要使用ObjC中的swift类。我已将生成的文件Framework Swift.hdefine module设置为YES。但是当我尝试在objective-c中导入它时,我得到 无法生成Objective-C模块

在iOS应用程序中,我有一个子项目(不是cocoapods),其中包括一个swift文件和一个ObjC文件(swift文件使用)。XCode自动创建了一个桥接文件,但无法构建它,因为框架中不允许明显的桥接。我使用的解决方法是将objective-c头添加到伞形文件中,它成功了。现在我需要使用ObjC中的swift类。我已将生成的文件Framework Swift.h
define module
设置为YES。但是当我尝试在objective-c中导入它时,我得到

无法生成Objective-C模块

谷歌搜索后我得到的最接近的答案是:

啊,明白了。看起来你正在构建一个混合的Swift和Objective-C pod-如果是这种情况,Xcode将尝试导入 在生成的-Swift.h标头中。 您需要手动创建标题,并为标题添加导入 要向Swift公开的Objective-C类

CocoaPods自动生成伞头并将其导入 在.modulemap中,但Xcode在生成 -Swift.h头球

但我不确定需要手动创建什么标题。 关于在objective-c框架中使用swift有什么想法或建议吗?在这两种情况下?

有一种方法可以解决这个问题:

  • 定义\u模块=是
  • 要在Swift中使用ObjC类,请创建桥接头并在生成设置中指定指向它的路径
  • 要在ObjC中使用Swift类,请在
    *.m
    文件中导入
    (如果需要,在
    *.h
    文件中使用
    @class SwiftClass;
    转发声明)
  • 使swift类及其成员对objc可见
  • NSObject
  • @objcMembers
  • 将类及其成员公开

  • 在包含多个目标的Swift项目中使用Swift吊舱时,我也遇到了类似的问题。根本没有Objective-C代码。我试图清除构建文件夹、吊舱缓存和派生数据,但没有任何效果

    解决方案:

    打开包含模块代码的目标的生成设置。将“安装Objective-C兼容性头”设置为“否”


    对我来说,答案是将其设置为“否”,然后再将其设置为“是”。对我不起作用