当项目在 Swift 中时,无法从 Objective-C 访问 swift class
Can't access swift class from Objective-C while the project is in Swift
我有一个 swift 项目,我最初的 UIViewController
是 swift class.
从最初的ViewController
开始,我在storyboard
中添加了一个新的Viewcontroller
并设置了一个objective-cclass (FirstViewController.h
) 为它。
在我的项目中,我有另一个 swift class (DataManager.Swift
),它是 class 的子class =23=]。
现在我想在我的 objective-C class (FirstViewController.m
) 中创建此 DataManager.swift
的一个实例。但不幸的是,我无法创建这个实例,给我一个错误 -
Receiver '
DataManager' for class message is a forward declaration
我现在可以做什么来解决这个问题?是否可以在项目处于 swift 时从 Objectibe-C class 访问 swift class?
我的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.swiftclass,
import UIKit;
@objc class DataManager: NSObject {
var a: Int = 0
}
我的 BridgingHeaderFile,
#ifndef BridgingHeader_h
#define BridgingHeader_h
#import "FirstViewController.h"
#endif
您应该使用以下语法将 swift 模块导入到您的 .m 文件中:
#import "ModuleName-Swift.h"
其中 ModuleName
通常是您的项目名称。
注意:添加 -Swift
后缀很重要!
此外 @class DataManager;
导入后会多余。
我有一个 swift 项目,我最初的 UIViewController
是 swift class.
从最初的ViewController
开始,我在storyboard
中添加了一个新的Viewcontroller
并设置了一个objective-cclass (FirstViewController.h
) 为它。
在我的项目中,我有另一个 swift class (DataManager.Swift
),它是 class 的子class =23=]。
现在我想在我的 objective-C class (FirstViewController.m
) 中创建此 DataManager.swift
的一个实例。但不幸的是,我无法创建这个实例,给我一个错误 -
Receiver '
DataManager' for class message is a forward declaration
我现在可以做什么来解决这个问题?是否可以在项目处于 swift 时从 Objectibe-C class 访问 swift class?
我的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.swiftclass,
import UIKit;
@objc class DataManager: NSObject {
var a: Int = 0
}
我的 BridgingHeaderFile,
#ifndef BridgingHeader_h
#define BridgingHeader_h
#import "FirstViewController.h"
#endif
您应该使用以下语法将 swift 模块导入到您的 .m 文件中:
#import "ModuleName-Swift.h"
其中 ModuleName
通常是您的项目名称。
注意:添加 -Swift
后缀很重要!
此外 @class DataManager;
导入后会多余。