我用Swift写了一个库,但我不能把它导入到我目前用Objective-C写的项目中。
有什么方法可以导入吗?
#import "SCLAlertView.swift" - 'SCLAlertView.swift' file not found
我用Swift写了一个库,但我不能把它导入到我目前用Objective-C写的项目中。
有什么方法可以导入吗?
#import "SCLAlertView.swift" - 'SCLAlertView.swift' file not found
当前回答
在你要构建的目标的构建设置(假设是MyApp-Swift.h)中搜索“Objective-C生成的接口头名称”,并在你要访问Swift api的源文件中导入这个设置的值(#import“MyApp-Swift.h”)。
该字段的默认值是$(SWIFT_MODULE_NAME)-Swift.h。如果双击“Objective-C Generated Interface Header Name”设置的值字段,就可以看到它。
同样,如果在模块名中有破折号(假设是My-App),那么在$(SWIFT_MODULE_NAME)中所有的破折号都将被下划线替换。然后你需要添加#import "My_App-Swift.h"。
其他回答
在你要构建的目标的构建设置(假设是MyApp-Swift.h)中搜索“Objective-C生成的接口头名称”,并在你要访问Swift api的源文件中导入这个设置的值(#import“MyApp-Swift.h”)。
该字段的默认值是$(SWIFT_MODULE_NAME)-Swift.h。如果双击“Objective-C Generated Interface Header Name”设置的值字段,就可以看到它。
同样,如果在模块名中有破折号(假设是My-App),那么在$(SWIFT_MODULE_NAME)中所有的破折号都将被下划线替换。然后你需要添加#import "My_App-Swift.h"。
在项目中找到. pch文件。然后添加#import "YourProjectName-Swift.h"这将导入类头文件。这样你就不需要导入到特定的文件中。
#ifndef __IPHONE_3_0
#warning "This project uses features only available in iPhone SDK 3.0 and later."
#endif
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "YourProjectName-Swift.h"
#endif
需要导入“ProductName-Swift.h”。注意,这是产品名称-其他答案犯了使用类名的错误。
这个文件是一个自动生成的头文件,它为项目中的所有Swift类定义了Objective-C接口,这些类要么带有@objc注释,要么继承自NSObject。
注意事项:
如果你的产品名称包含空格,用下划线替换它们(例如,My Project变成My_Project-Swift.h) 如果您的目标是一个框架,您需要导入<ProductName/ProductName- swift .h> 确保你的Swift文件是目标的成员
小心使用破折号和下划线,它们可能会混淆,并且您的项目名称和目标名称不会与SWIFT_MODULE_NAME相同。
第一步:-
选择项目目标->构建设置->搜索(“定义”)->定义模块 将值从No更新为Yes
“定义模块”:YES。
“总是嵌入Swift标准库”:是的。
“安装Objective-C兼容头”:YES。
第二步:-
在Objective C“.h”文件中添加Swift文件类,如下所示
#import <UIKit/UIKit.h>
@class TestViewController(Swift File);
@interface TestViewController(Objective C File) : UIViewController
@end
在Objective C中导入“ProjectName(你的项目名)-Swift.h”。m”文件
//TestViewController.m
#import "TestViewController.h"
/*import ProjectName-Swift.h file to access Swift file here*/
#import "ProjectName-Swift.h"