Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.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 将swift框架导入objective-c项目_Ios_Objective C_Swift_Ios Frameworks - Fatal编程技术网

Ios 将swift框架导入objective-c项目

Ios 将swift框架导入objective-c项目,ios,objective-c,swift,ios-frameworks,Ios,Objective C,Swift,Ios Frameworks,我正在将swift框架导入objective-c项目,如下所示: @import MyFramework; 问题是,我正在导入框架的类只能识别一些类 被认可的类别: public class RecognizedClass:UIViewController, WKNavigationDelegate, WKScriptMessageHandle { ... } 不属于以下类别的类别: public class VeediUtils { ... } 它们都是公共的,那么为什么第一个在

我正在将swift框架导入objective-c项目,如下所示:

@import MyFramework;
问题是,我正在导入框架的类只能识别一些类

被认可的类别:

public class RecognizedClass:UIViewController, WKNavigationDelegate, WKScriptMessageHandle 
 { ... } 
不属于以下类别的类别:

public class VeediUtils
{ ... } 
它们都是公共的,那么为什么第一个在工作区中被识别,而另一个不被识别呢

我还在头文件myframeworkswift.h中看到一个类

@interface RecognizedClass : UIViewController <WKNavigationDelegate, WKScriptMessageHandler>
@接口识别类:UIViewController
出现而另一个不出现

为什么呢


还要指出的是,当我将swift框架导入swift项目以访问objc中的swift类(该类不是从NSObject继承的)时,同样的过程也会起作用,您需要:

@objc公共类VeediUtils

Swift类或协议必须用@objc属性标记才能在Objective-C中访问和使用。该属性告诉编译器可以从Objective-C访问这段Swift代码。如果您的Swift类是Objective-C类的后代,编译器会自动为您添加@objc属性


您必须将
@objc
添加到
VeediUtils
类的声明中,或者使其继承自
NSObject
。否则,Objective-C将看不到它


在您的情况下,
RecognizedClass
被识别是因为它是
UIViewController
的一个子类,而UIViewController是
NSObject

的一个子类。如果您以前将项目配置为与Swift集成,并且希望使用Swift动态框架,则必须以这种方式导入它(替换{value})根据您的项目使用合适的名称):

#导入
#导入“{YourProjectTargetName}-Swift.h”
编辑:

如果您的框架将
定义模块
设置为
,那么您可以这样导入它:

@import MyFramework;
@import-MyFramework;

在Objective-C中使用Swift类

如果要在应用程序目标中导入代码(在一个项目中混合使用Objective-C和Swift),则应使用下一个导入行
#import“-Swift.h”
将Swift代码公开给Objective-C代码

在这篇文章中,我将描述如何将Swift框架导入Objective-C代码

Objective-C消费者->Swift动态框架 Xcode版本10.2.1

创建Swift框架 跟随

公开Swift API。使用Objective-C中的Swift函数

目标C消费者 跟随

将模块导入Objective-C客户端代码


我不能使用PaperOnboard:#导入“PaperOnboard/PaperOnboard-Swift-h”迟早不起作用
UIViewController
也将是Swift类