我用Swift写了一个库,但我不能把它导入到我目前用Objective-C写的项目中。

有什么方法可以导入吗?

#import "SCLAlertView.swift" - 'SCLAlertView.swift' file not found

当前回答

#import <TargetName-Swift.h>

当你从键盘输入#import <时,你会看到Xcode会自动提示你。

其他回答

如果你正在使用Cocoapods,并试图在ObjC项目中使用Swift pod,你可以简单地执行以下操作:

@import < FrameworkName >;

如果你在Swift 4中创建了一个项目,然后添加了Objective-C文件,这样做:

@objcMembers
public class MyModel: NSObject {
    var someFlag = false         
    func doSomething() {         
        print("doing something")
    }
}

参考:https://useyourloaf.com/blog/objc-warnings-upgrading-to-swift-4/

只是一些关于Xcode的语法技巧

你不能导入“纯”函数,只能导入类,即使标记为“public”,所以: 公共函数f1(){ 打印(f1); }

将不会以任何方式调用。

如果你写类。,从NSObject中添加继承,其他将不可用。 如果它继承自NSObject,如下所示: 类Utils: NSObject{ static func aaa()->字符串{ 返回“AAA” } @objc static func bbb()->字符串{ 返回" BBB " } @objc private static func ccc()->字符串{ 返回“CCC” } }

在OBJC:

aaa()未调用:"没有已知的类方法的选择器'aaa'"

bbb() ok

ccc() NOT called: "没有已知的类方法的选择器'aaa'"

在你要构建的目标的构建设置(假设是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"。

在同一个项目中检查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"