我用Swift写了一个库,但我不能把它导入到我目前用Objective-C写的项目中。
有什么方法可以导入吗?
#import "SCLAlertView.swift" - 'SCLAlertView.swift' file not found
我用Swift写了一个库,但我不能把它导入到我目前用Objective-C写的项目中。
有什么方法可以导入吗?
#import "SCLAlertView.swift" - 'SCLAlertView.swift' file not found
当前回答
第一步:-
选择项目目标->构建设置->搜索(“定义”)->定义模块 将值从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"
其他回答
下面是该怎么做:
在Objective-C中创建一个新项目 创建一个新的.swift文件 将会出现一个弹出窗口并询问“您是否想配置一个Objective-C桥接头”。 选择Yes。 点击Xcode项目文件 点击构建设置 找到搜索栏并搜索定义模块。 将“value”修改为“Yes”。 搜索“产品模块名称”。 将该值更改为项目的名称。 在App委托中,添加以下内容:
注意:无论何时你想使用你的Swift文件,你必须导入以下行:
#进口“YourProjectName-Swift.h”
需要导入“ProductName-Swift.h”。注意,这是产品名称-其他答案犯了使用类名的错误。
这个文件是一个自动生成的头文件,它为项目中的所有Swift类定义了Objective-C接口,这些类要么带有@objc注释,要么继承自NSObject。
注意事项:
如果你的产品名称包含空格,用下划线替换它们(例如,My Project变成My_Project-Swift.h) 如果您的目标是一个框架,您需要导入<ProductName/ProductName- swift .h> 确保你的Swift文件是目标的成员
如果你在同一个框架中将Swift代码导入到Objective-C文件中,有一个警告。你必须指定框架名和尖括号:
# < MyFramework /进口MyFramework-Swift.h >
这里是“产品模块名称”构建设置(PRODUCT_NAME = MyFramework)。
简单地添加#import“myframe - swift .h”是行不通的。如果你检查构建的产品目录(在添加#import之前,所以你至少有一个成功的构建目标中有一些Swift代码),那么你仍然应该在Headers目录中看到文件myframe -Swift.h。
在同一个项目中检查Swift和Objective C的发布前说明
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_75
你应该导入
#import "SCLAlertView-Swift.h"
小心使用破折号和下划线,它们可能会混淆,并且您的项目名称和目标名称不会与SWIFT_MODULE_NAME相同。