Objc类无法识别Swift类

时间:2018-11-16 18:18:44

标签: objective-c swift objc-bridging-header

我无法按照以下步骤在我的目标c项目中导入swift类:

环境:

Xcode:10.0

迅速:4.2

1-Ctrl + N生成一个新的快捷文件

2-从xcode问题中选择“创建桥接标题”

3-在目标上->构建设置,搜索“打包”并打开“定义模块”

4-在我的objc .m文件中导入#import“ MyProjectModuleName-Swift.h”

5-尝试调用我的swift方法,但似乎没有任何效果,我无法调用它,因为我的.m类无法识别我的.swift文件。

怎么了?

1 个答案:

答案 0 :(得分:0)

我试图在目标c项目中使用swift类,并花了很多时间试图使它无法成功工作。

在我为我的Project-Swift.h找到正确的路径之前,所有答案都对我不起作用。

那是挽救我生命的把戏。


按照此步骤操作,您将成功!

1-创建您的xcode项目

2-创建一个新的.swift文件

3-将出现一个对话框,请确保在提示时选择“创建桥接标题”。

4-在目标上->构建设置,搜索“打包”并打开“定义模块”

5-在您的快速文件上(示例)

import Foundation

@objcMembers

class MyClass: NSObject {
    public func test () -> String {
        return "Swift says hi to objc class!"
    }
}

请注意 @objcMembers ,它将使objc类识别出Swift类!

Find it here

6-在第3步中,将objc类.m或.h文件导入自动生成的Project-Swift.h文件

我的目标是导入它:

#import <Teste-Swift.h>

不是:

#import "Teste-Swift.h"

就是这样,头痛之后我得到了答案

所以最后,我的.m文件是这样的:

#import "ViewController.h"
#import <Teste-Swift.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    //-------------        
    MySwiftClass *myswiftclass = [[MySwiftClass alloc] init];
    NSString *string = [myswiftclass test];
    NSLog(@"%@",string);
}


@end

我的.swift文件:

import Foundation

@objcMembers

class MySwiftClass: NSObject {
    public func test () -> String {
        return "Swift says hi second swift class!"
    }
}

我希望这可以帮助您。