在Swift中使用数组元素作为VAR Uilabel名称



我正在尝试构建一个键/值对,以供稍后引用。数组将保存索引参考,并在内部具有值。其中一个值是与索引匹配的视频,另一个值是相应的标签名称(因此,播放视频时我可以更改颜色)。

这是我的代码:

class ViewController: UIViewController {
    var videos = [5: ["urltovideo1", "locationOne"], 7: ["urltovideo2", "locationTwo"]]
    var bg: UILabel!
    @IBOutlet weak var locationOne: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        bg = videos[5]![1]
        bg.backgroundColor = UIColor.green
    }
}

我会遇到一个错误"无法为'uilabel!'的类型'字符串'分配值!我尝试了" bg = uilabel(videos [5]![1])"并获得错误","参数标签"(_ :)'不匹配任何可用的过载"

关于如何修复它或更好地实施此方法的任何想法?

这是您的解决方案:

@objc var locationOne: UILabel!
@objc var locationTwo: UILabel!
var videos = [5: ["urltovideo1", "locationOne"], 7: ["urltovideo2", "locationTwo"]]
var bg: UILabel! = UILabel()
override func viewDidLoad() {
    super.viewDidLoad()
    if let bg = self.value(forKey: videos[5]![1]) as? UILabel {
        bg.backgroundColor = UIColor.green
    }
}

@OBJC需要使self.value(forKey:)正常工作 - 您必须为要通过此方法访问的每个属性添加它。

最新更新