目标是在类扩展的结构中访问静态变量:
extension UIColor {
struct MyColors {
static var happy: UIColor {
return UIColor(hexString: "#FFB100")!
}
static var superHappy: UIColor {
return UIColor(hexString: "#FFB101")!
}
static func withName(_ name: String = "") -> UIColor? {
return UIColor.value(forKey: name) as? UIColor
}
}
}
// Produces error "this class is not key value coding-compliant for the key happy."
let myHappyColor = UIColor.MyColors.withName("happy")
我们可以在 PHP 中做类似的事情吗?
<?php
$prop = 'Name';
echo $obj->$prop;
答案 0 :(得分:0)
您可以使用静态变量或枚举:
extension UIColor {
// MARK: - Static
static let myColor = UIColor(/* setup */)
或
enum MyColors {
case red
var color: UIColor {
switch self {
case .red:
return .red
}
}
答案 1 :(得分:0)
您可以在xcassets
目录中使用某些名称创建颜色设置。然后,您可以使用设计的初始化器来初始化此设置中的颜色
UIColor(named: "Name")
无论如何,在Swift中,您应该避免使用标识符初始化对象(我不是在谈论命名集,而是在谈论您当前的方法)。 Swift是安全类型的语言。尝试遵守安全类型语言的规则。