我用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。

其他回答

需要导入“ProductName-Swift.h”。注意,这是产品名称-其他答案犯了使用类名的错误。

这个文件是一个自动生成的头文件,它为项目中的所有Swift类定义了Objective-C接口,这些类要么带有@objc注释,要么继承自NSObject。

注意事项:

如果你的产品名称包含空格,用下划线替换它们(例如,My Project变成My_Project-Swift.h) 如果您的目标是一个框架,您需要导入<ProductName/ProductName- swift .h> 确保你的Swift文件是目标的成员

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

@import < FrameworkName >;

如果你在同一个框架中将Swift代码导入到Objective-C文件中,有一个警告。你必须指定框架名和尖括号:

# < MyFramework /进口MyFramework-Swift.h >

这里是“产品模块名称”构建设置(PRODUCT_NAME = MyFramework)。

简单地添加#import“myframe - swift .h”是行不通的。如果你检查构建的产品目录(在添加#import之前,所以你至少有一个成功的构建目标中有一些Swift代码),那么你仍然应该在Headers目录中看到文件myframe -Swift.h。

#import <TargetName-Swift.h>

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

如果你在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/