我有一个Swift项目,并在项目中导入了一个Objective-C编写的单例类。
我尝试导入productname_swift.h文件,但没有成功。
如何在该单例类中访问Swift类?
我有一个Swift项目,并在项目中导入了一个Objective-C编写的单例类。
我尝试导入productname_swift.h文件,但没有成功。
如何在该单例类中访问Swift类?
使用Swift类在Objective-C中:项目制作
要在Objective-C中使用Swift类,请按照以下步骤操作:
User.h
#import <Foundation/Foundation.h>
@interface User : NSObject
+(id) sharedUser ;
@end
User.m
#import "User.h"
#import "SwiftInObjectiveC-swift.h"
@implementation User
//Singleton of User
+(id)sharedUser{
static User *sharedUser = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedUser = [[self alloc] init];
//Class Method of ViewController.swift
[ViewController mySwiftClassFunction];
//Instance Method of ViewController.swift
ViewController *vc = [[ViewController alloc] init];
[vc mySwiftFunction];
});
return sharedUser;
}
-(void) myObjcectivecMethod {
ViewController *vc = [[ViewController alloc] init];
[vc mySwiftFunction];
}
Add @objc
in your .swift class in front of Class name.
import UIKit
@objc class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func mySwiftFunction() {
print("Swift Function")
}
class func mySwiftClassFunction (){
print("Swift Class Function")
}
}
Go to Build Settings.
Set Product Module Name : ProjectName
详细信息请参阅苹果链接 Mix and Match。
将多个Swift文件添加到Objective-C项目中。
假设您想要将Class1.swift,Class2.swift和Class3.swift文件添加到SwiftToObjC项目中
@class Class1;
@class Class1;
@class Class2;
@class Class3;
5. 在目标SwiftToObjC下,进入构建设置,Swift编译器常规,您应该看到这两个设置:
Objective-C桥接头文件 -> SwiftToObjC-Bridging-Header.h
Objective-C生成的接口头文件名称 -> SwiftToObjC-Swift.h
6. 在目标SwiftToObjC下,进入构建设置,将定义模块设置为YES。
#import "SwiftToObjC-Bridging-Header.h"
@objc public class Class1: UITableViewController
请注意:UITableViewController仅用于演示目的。
就这些。