如何从Swift中的关联数组中获取UIColor

我有这个arrays与一些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{ $0.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' 

我试图用我的新灯塔做一个HelloWorld,我被困在这个部分。 我想了解这是如何工作的。

谢谢

您使用NSNumber但数组需要Int作为索引。 select下列之一:

 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将NSNumber的对象转换为Double

通过事物的外观,closestBeacon.minor是一个NSNumber,而颜色是由Int索引的。

你可以使用closestBeacon.minor.integerValue