ios swift casting nsnumber cgfloat

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))