您可以通过使用扩展和枚举来获得类似的功能。
使用枚举可以避免拼写错误并受益于 Xcode 的自动建议/自动完成功能。
UIImage 示例:
extension UIImage {
enum ImageId: String {
// These are your images NAMES,
// as in "SpriteMonster.jpg"
case SpriteMonster, SpriteHero, BaseLandscape
}
convenience init!(id: ImageId) {
self.init(named: id.rawValue)
}
}
用法:
let monster = UIImage(id: .SpriteMonster) // the "SpriteMonster.jpg" image
对于这个例子,我强制解开便利初始化,所以要小心在你的包中实际使用正确名称的图像。
对于字符串:
extension String {
enum StringId: String {
case Welcome = "Welcome to the game!"
case GameOver = "You loose! Game over!"
}
init(id: StringId) {
self = id.rawValue
}
}
用法:
let label = String(id: .Welcome) // "Welcome to the game!"
对于字体:
extension UIFont {
enum FontId {
case HelveticaNeueLarge
case HelveticaNeueMedium
case HelveticaNeueSmall
func font() -> UIFont {
switch self {
case .HelveticaNeueLarge:
return UIFont(name: "HelveticaNeue", size: 18)!
case .HelveticaNeueSmall:
return UIFont(name: "HelveticaNeue", size: 12)!
default:
return UIFont(name: "HelveticaNeue", size: 14)!
}
}
}
class func get(id: FontId) -> UIFont {
return id.font()
}
}
用法:
let font = UIFont.get(.HelveticaNeueLarge) // <UICTFont: 0x7ffd38f09180> font-family: "Helvetica Neue"; font-weight: normal; font-style: normal; font-size: 18.00pt
这些只是演示概念的示例,您可以进一步了解这一点。