简而言之,我有一个存储应用程序常量的结构,如下所示:
struct Constant {
static let ParseApplicationId = "xxx"
static let ParseClientKey = "xxx"
static var AppGreenColor: UIColor {
return UIColor(hexString: "67B632")
}
}
这些常量可以通过调用在 Swift 代码中使用Constant.ParseClientKey
例如。但在我的代码中,它还包含一些 Objective-C 类。所以我的问题是如何在 Objective-C 代码中使用这些常量?
如果这种声明常量的方法不好,那么创建在 Swift 和 Objective-C 代码中使用的全局常量的最佳方法是什么?
遗憾的是,你不能暴露struct
,也不是 Objective-C 的全局变量。看文档,其中部分说明:
当您需要 Objective-C 互操作性时使用类
如果您使用需要处理数据的 Objective-C API,或者需要将数据模型放入 Objective-C 框架中定义的现有类层次结构中,则可能需要使用类和类继承来对数据进行建模。例如,许多 Objective-C 框架公开了您希望子类化的类。
截至目前,恕我直言,最好的方法是这样的:
let ParseApplicationId = "xxx"
let ParseClientKey = "xxx"
let AppGreenColor = UIColor(red: 0.2, green: 0.7, blue: 0.3 alpha: 1.0)
@objc class Constant: NSObject {
private init() {}
class func parseApplicationId() -> String { return ParseApplicationId }
class func parseClientKey() -> String { return ParseClientKey }
class func appGreenColor() -> UIColor { return AppGreenColor }
}
在 Objective-C 中,你可以像这样使用它们:
NSString *appklicationId = [Constant parseApplicationId];
NSString *clientKey = [Constant parseClientKey];
UIColor *greenColor = [Constant appGreenColor];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)