objective-c - Objective-c 看不到 Swift 类的方法
问题描述
目前我需要在 Objective-c 代码中使用我的 Swift 全局变量。这些是我的变量:
public var Name = [String]()
public var Author = [String]()
public var Url = [String]()
这是一个返回我的公共变量的类:
@objc class AppConstant: NSObject {
private override init() {}
class func name() -> [String] { return Name }
class func author() -> [String] { return Author}
class func url() -> [String] { return Url}
}
我的 Objective-C 代码:
@implementation SecondViewController
NSArray *urlArray;
NSArray *nameArray;
NSArray *authorArray;
- (void)viewDidLoad {
[super viewDidLoad];
urlArray = [AppConstant url];
nameArray = [AppConstant name];
authorArray = [AppConstant author];
}
@end
我认为一切都应该没问题,但它返回错误
选择器 'url'/'name'/'author' 没有已知的类方法。
有人可以解释错误在哪里。我按照这里的解释做了所有事情,但它不起作用。希望有人能帮助我
先感谢您!
解决方案
你需要@objc
添加到任何你想暴露给 Objective-C 的属性或方法。
@objc class AppConstant: NSObject {
private override init() {}
@objc class func name() -> [String] { return Name }
@objc class func author() -> [String] { return Author}
@objc class func url() -> [String] { return Url}
}
或者,@objcMembers
如果您想公开所有非私有属性和方法,可以使用:
@objcMembers class AppConstant: NSObject {
private override init() {}
class func name() -> [String] { return Name }
class func author() -> [String] { return Author}
class func url() -> [String] { return Url}
}
这是 Swift 4 与 Swift 3 的一个变化。请注意,您链接的旧问题已有 4 年历史。从那时起,Swift 发生了很大的变化。
推荐阅读
- java - 低质量图像图标
- jquery - 提要页面(如 Twitter 中的用户帖子)如何异步加载新帖子,以便在不刷新页面的情况下显示新帖子?
- c++ - 需要帮助 struct-void 错误:不允许类型名称
- r - 试图找到标准正态变量的总和大于 R 中的设定值的概率
- laravel - 在 laravel 的 mongodb db 中,在 null 上调用成员函数 prepare() 时出错
- android - Android jetpack compose observeAsState() 属性委托必须有一个 'getValue(Nothing?, KProperty<*>)'
- twilio - 是否可以从网络聊天(在网站上)接收消息并使用 Twilio 将此消息转发到 Whatsapp?
- python - 根据给定条件向现有数据框添加多个新列
- amp-html - amp-script Uncaught TypeError:无法读取未定义的属性(读取“点击”)
- php - 使用 Electron 和网站构建游戏,但是如何使用网站上的按钮打开电子应用程序?基于 PHP