Swift 如何从关联数组获取 UIColor

How to get a UIColor from Associative Array in Swift

我有这个带有一些 UIColors 的数组:

let colors = [
    35302: UIColor(red: 66/255, green: 55/255, blue: 101/255, alpha: 1),
    53350: UIColor(red: 158/255, green: 218/255, blue: 222/255, alpha: 1),
    54747: UIColor(red: 158/255, green: 222/255, blue: 189/255, alpha: 1)
]

现在,我正在尝试访问数组中的一些索引:

func locationManager(manager: CLLocationManager!, didRangeBeacons beacons: [AnyObject]!, inRegion region: CLBeaconRegion!) {
    let knownBeacons = beacons.filter{ [=12=].proximity != CLProximity.Unknown }
    if(knownBeacons.count > 0) {
        let closestBeacon = knownBeacons[0] as! CLBeacon
        self.view.backgroundColor = self.colors[closestBeacon.minor]
    }
}

行:

self.view.backgroundColor = self.colors[closestBeacon.minor]

我收到此错误:

Cannot subscript a value of type '[Int: UIColor]' with an index of type 'NSNumber'

我正在尝试用我的新 Beacon 制作一个 HelloWorld,但我被困在了这一部分。 我想了解这是如何工作的。

谢谢

看起来,closestBeacon.minor 是一个 NSNumber,而颜色是由 Int 索引的。

您可以使用 closestBeacon.minor.integerValue

您使用 NSNumber 但数组需要 Int 作为索引。选择以下选项之一:

self.view.backgroundColor = self.colors[closestBeacon.minor as Int]
self.view.backgroundColor = self.colors[closestBeacon.minor.integerValue]
self.view.backgroundColor = self.colors[Int(closestBeacon.minor)]

你也可以看看这个问题Swift convert object that is NSNumber to Double