我用Swift写了一个库,但我不能把它导入到我目前用Objective-C写的项目中。
有什么方法可以导入吗?
#import "SCLAlertView.swift" - 'SCLAlertView.swift' file not found
我用Swift写了一个库,但我不能把它导入到我目前用Objective-C写的项目中。
有什么方法可以导入吗?
#import "SCLAlertView.swift" - 'SCLAlertView.swift' file not found
当前回答
如果你在同一个框架中将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代码从相同的框架导入Objective-C 在构建设置下,在打包中,确保定义模块 该框架目标的设置被设置为Yes。导入Swift代码 从框架目标到其中的任何Objective-C .m文件 框架目标使用此语法并适当替换 的名字: #进口“ProductName-Swift.h”
修订:
只能导入。m格式的“ProductName-Swift.h”。
目标中的Swift文件将在Objective-C .m文件中可见 包含此导入语句。 为了避免循环引用,不要将Swift导入Objective-C 头文件。相反,你可以向前声明一个Swift类来使用它 在Objective-C头文件中。注意你不能子类化一个Swift类 在objective - c中。
小心使用破折号和下划线,它们可能会混淆,并且您的项目名称和目标名称不会与SWIFT_MODULE_NAME相同。
#import <TargetName-Swift.h>
当你从键盘输入#import <时,你会看到Xcode会自动提示你。
在Objective-c中导入Swift文件会导致这个错误,如果导入不正确的话。
注意:你不需要从外部导入Swift文件,你只需要导入一个文件来照顾Swift文件。
当你在Objective-C项目中创建/复制Swift文件时。它会自动创建一个桥接头。
检查Objective-C生成的接口头名称在目标->构建设置。
基于以上,我将按原样导入KJExpandable-Swift.h。
你的将是TargetName- swift .h,其中TargetName根据你的项目名称或你可能添加并在其上运行的另一个目标而不同。
因为下面我的目标是KJExpandable,所以它是KJExpandable- swift .h