Не удается получить доступ к классу Swift из Objective-C, пока проект находится в Swift - PullRequest
0 голосов
/ 21 марта 2019

У меня есть быстрый проект, и мой начальный UIViewController является быстрым классом.

Из начальных ViewController я добавил новый Viewcontroller в свой storyboard и установил target-c класс (FirstViewController.h) для него.

В моем проекте у меня есть еще один swift класс (DataManager.Swift), который является подклассом NSObject.

Теперь я хочу создать экземпляр этого DataManager.swift в моем классе target-C (FirstViewController.m).Но, к сожалению, я не смог создать этот экземпляр, выдав мне ошибку типа - Receiver ' DataManager ' for class message is a forward declaration

Что я могу сделать сейчас, чтобы решить эту проблему?Можно ли получить доступ к swift классу из класса Objectibe-C , когда проект находится в быстром режиме?

My FirstViewController.m ,

#import "FirstViewController.h"
@class DataManager;

@interface FirstViewController ()

@property (nonatomic, strong) DataManager *dataManager;

@end

@implementation FirstViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
   _dataManager = [[DataManager alloc] init]; //This line giving me that error
}
@end

Мой DataManager.swift класс,

import UIKit;

@objc class DataManager: NSObject {
    var a: Int = 0
}

Мой BridgingHeaderFile ,

#ifndef BridgingHeader_h
#define BridgingHeader_h
#import "FirstViewController.h"
#endif

1 Ответ

4 голосов
/ 21 марта 2019

Вы должны импортировать ваш модуль swift в ваш файл .m с этим синтаксисом:
#import "ModuleName-Swift.h", где ModuleName обычно является именем вашего проекта.
ПРИМЕЧАНИЕ: добавление суффикса -Swift важно!

Также @class DataManager; будет избыточным после импорта.

...