如何在目标c中引用swift app delegate

时间:2018-01-09 11:20:24

标签: objective-c swift appdelegate bridging-header

我想在目标C视图控制器中引用swift app delegate,因为我想将NSMutableArray中的数据提交到core data

我已导入

#import "SPOTEVENT-EventNotificationApp-Bridging-Header.h"
#import "AppDelegate.swift"

在目标C视图控制器中,但每当我尝试创建应用程序委托实例时,它都会给出错误

  

“未知类型名称”

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    AppDelegate   *appDelegate;
    NSManagedObjectContext *context;

2 个答案:

答案 0 :(得分:2)

Generated Interface Header允许您在Swift中使用Objective-C代码。您需要导入Objective-C Generated Interface Header Name以在Objective-C中使用Swift代码

目标构建设置部分中查找<TargetName>-Swift.h设置。它通常是.m

enter image description here

大多数情况下,您通常会导入#import "MyTarget-Swift.h"文件以查看Swift类。

.h

如果在OC中采用Swift协议,您可能需要导入AppDelegate但是可以通过桥接标头引入循环依赖,因此请谨慎使用。

如果@objc类仍未显示,则可能需要将Command-Click添加到类声明中,或检查您的类是否正在使用任何阻止导出的Swift功能。您可以 <td>{{ ($index + 1) + (currentPage - 1) * pageSize }}</td> import语句来查看标题的内容,这对调试很有用。

答案 1 :(得分:0)

执行此步骤以在objective-c文件中使用swift文件。

1)#Import "YourProjectName-swift.h" in Objective-C (.m) file

2)现在创建AppDelegate的实例,如下所示。

AppDelegate *appDel = (AppDelegate*)[[UIApplication sharedApplication] delegate];

注意: - 您必须在项目中添加桥接标题。