Я пытался использовать быстрый класс внутри целевого проекта c и потратил много времени, пытаясь заставить его работать безуспешно.
Весь ответ не работал для меня, пока я не получил правопуть к моему Project-Swift.h.
Это был трюк, который спас мне жизнь.
Следуйте этим шагам, и у вас все получится!
1 - Создатьваш проект xcode
2 - Создайте новый файл .swift
3 - Появится диалоговое окно, убедитесь, что при появлении запроса выберите «Создать заголовок моста».
4- В Target -> настройки сборки, найдите «Packaging» и включите «Defines Module»
5 - В вашем быстром файле (образец)
import Foundation
@objcMembers
class MyClass: NSObject {
public func test () -> String {
return "Swift says hi to objc class!"
}
}
Здесь обратите внимание на @ objcMembers , который позволит классу objc распознавать swift класс!
Найдите его здесь
6 - В свой файл objc .m или .h импортируйте свой файлавтоматически сгенерированный файл Project-Swift.h на шаге 3
Моя цель состояла в том, чтобы импортировать его:
#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!"
}
}
Надеюсь, это может помочь вам, ребята.