Simply I have a struct that stores the application constants as below:
struct Constant {
static let ParseApplicationId = "xxx"
static let ParseClientKey = "xxx"
static var AppGreenColor: UIColor {
return UIColor(hexString: "67B632")
}
}
These constants can be use in Swift code by calling Constant.ParseClientKey
for example. But in my code, it also contains some Objective-C classes. So my question is how to use these constants in the Objective-C code?
If this way to declare constants is not good then what is the best way to create global constants to be used in both Swift and Objective-C code?
Sad to say, you can not expose struct
, nor global variables to Objective-C. see the documentation.
As of now, IMHO, the best way is something like this:
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 }
}
In Objective-C, you can use them like this:
NSString *appklicationId = [Constant parseApplicationId];
NSString *clientKey = [Constant parseClientKey];
UIColor *greenColor = [Constant appGreenColor];