Ios 从obj c呼叫swift

Ios 从obj c呼叫swift,ios,swift,Ios,Swift,我试图从objC调用swift文件中的函数。我已尝试导入project_name-Swift.h,但出现错误-> 未找到项目名称.h文件 objC文件是pod的一部分。我不知道这是否与问题有关 谢谢你的帮助!: 复制并粘贴您希望在导入语句旁边使用的确切头文件名.h文件。您不需要导入项目名称,您需要要使用的头文件。我本想把这个写进评论里,但我是新来的,我想我还不能评论 例如,如果您想在项目中使用SWRevealViewController.h,您需要 #import "SWRevealViewCo

我试图从objC调用swift文件中的函数。我已尝试导入project_name-Swift.h,但出现错误-> 未找到项目名称.h文件

objC文件是pod的一部分。我不知道这是否与问题有关


谢谢你的帮助!:

复制并粘贴您希望在导入语句旁边使用的确切头文件名.h文件。您不需要导入项目名称,您需要要使用的头文件。我本想把这个写进评论里,但我是新来的,我想我还不能评论

例如,如果您想在项目中使用SWRevealViewController.h,您需要

#import "SWRevealViewController.h"
在桥接头文件中


我希望这有帮助

欢迎来到StackOverflow,Sam!您需要一个桥接头来连接目标C代码和swift代码。这是一个关于如何创建桥接头(如果您还没有桥接头)的视频。如果这个答案对您有帮助,请单击复选标记使其正确,然后单击向上箭头帮助我

您需要添加一个桥头文件PROJECT_NAME-bridgeing-header.h,并添加XCode在其中找不到的所需头文件。您可以在Objective-C桥接标题下的项目构建设置中找到该文件的名称

当您将objc文件添加到Swift项目时,该文件会自动神奇地创建,用于从Swift调用Objective-C,但显然,相反方向也需要该文件

您需要做的其他事情是将导入项目\u NAME-Swift.hto添加到您的objective-c文件中。该文件是在DerivedData项目的构建目录的深处创建的,其命名约定是预定义的

此外,您需要使用:NSObject扩展Swift类,并在声明的开头用@objc标记它们


最后,如果类和方法属于不同的模块,则需要在Swift中将它们标记为public。Public不是默认的访问权限。

您需要按照以下简单步骤解决问题:

一,。首先从项目中删除现有的桥接头文件“选择文件->右键单击->在finder中显示”

二,。删除后,还要检查其是否存在于项目中。若不存在,那个么在项目的根目录下准备新的头文件

三,。现在选择您的项目并进入生成设置。finf swift编译器-代码生成部分

四,。将安装Objective-C兼容性标题设置为“是”

五,。在objective-c桥接头中设置路径,如:projectname/bridgeing header filename.h


六,。现在按alt键选择产品菜单并选择clean build folder。运行您的项目,现在它运行良好

只需在项目的根目录下准备桥接头文件,然后重新构建项目。

只需在项目的根目录下创建桥接头文件,然后在构建设置中设置路径。

有很多困惑,许多人回答了相反的问题,从Swift调用Obj C

苹果文档非常清楚地展示了这一点

我创造了一个警告

import UIKit
import Foundation

@objc open class MySwiftViewClass: UIView {

        // this next call becomes 
        //    [myDaBar myFuncWithString:aString];  
        @objc open func myFunc(withString:String) {
        let greeting = "Hello!"
    }
}
正如您在注释中看到的,成员函数myFunc获取附加到它的变量名

您还可以在以下位置的生成的头文件中看到它:

/Users/<yourname>/Library/Developer/Xcode/DerivedData/TargetName-bthdvookrisgtractdotackhxhjh/Build/Intermediates.noindex/TargetName.build/Debug-iphonesimulator/ProductName.build/DerivedSources/Project-Name-Swift.h

请说明您的项目是如何设置的。Swift文件位于哪个模块/目标中?pod与项目的其他部分有什么关系?你能分享更多的代码吗?请过桥头用于从Swift代码调用Obj-C代码,而不是反过来。对,除非我读错了,否则他想将pod中的Obj-C代码输入他的Swift项目