ios - Convertir CGFloat a NSNumber en Swift
casting (4)
Tengo una extensión en Swift que tiene algunas propiedades que son de CGFloat
. El problema es que no sé cómo obtener el valor CGFloat
como un NSNumber
utilizando los objetos asociados.
Aquí está el código que tengo que no funciona pero detalla lo que quiero hacer:
var scaledFontSize: CGFloat {
get {
guard let fontSize = objc_getAssociatedObject(self, &AssociatedKeys.scaledFontSize) as? NSNumber else {
//Set it
let scaledFont:CGFloat = VGSizeValues.getValueFromValue(self.font.pointSize);
//Fails here
objc_setAssociatedObject(self,&AssociatedKeys.scaledFontSize, NSNumber( scaledFont),objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
return scaledFont;
}
return CGFloat(fontSize.doubleValue);
}
}
¿Hay alguien manera de evitar esto?
En Swift 3.0
let myFloat : CGFloat = 1234.5
let myNumber = NSNumber(value: Float(myFloat))
o
let myNumber = NSNumber(value: Double(myFloat))
En Swift 2
let myNumber = NSNumber(double: myFloat.native)
o
let myNumber = NSNumber(double: Double(myFloat))
o
let myNumber = NSNumber(float: Float(myFloat))
Para Swift 3.1
var final_price: CGFloat = 12.34
let num = final_price as NSNumber
Para mí esto está trabajado.
self.configuration.cellHeight as NSNumber!
Swift 3
let myNumber = NSNumber(value: Float(myCGFloat))