2015-12-15 27 views
18

Ich habe eine Erweiterung in Swift, die einige Eigenschaften enthält, die CGFloat sind. Das Problem ist, dass ich weiß nicht, wie das Laden der CGFloat Wert als NSNumber zu bekommen, ist mit den zugehörigen ObjektenConvert CGFloat in NSNumber in Swift

Hier ist der Code Ich habe das nicht funktioniert, aber es Details, was ich tun möchte:

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

    } 
} 

Gibt es einen Weg, um dies zu umgehen?

+0

lassen floatInNumber = NSNumber (float: Float (floatvalue)) –

Antwort

37

in Swift 3,0

let myFloat : CGFloat = 1234.5 

let myNumber = NSNumber(value: Float(myFloat)) 

oder

let myNumber = NSNumber(value: Double(myFloat)) 

In Swift 2

let myNumber = NSNumber(double: myFloat.native) 

oder

let myNumber = NSNumber(double: Double(myFloat)) 

oder

let myNumber = NSNumber(float: Float(myFloat)) 
+0

das Problem mit lassen myNumber = NSNumber (Wert: Float (myFloat)) ist, dass ich Präzision CGFloat verlieren 0.4 => Float 0.400000006 – CiNN

7

Swift 3

let myNumber = NSNumber(value: Float(myCGFloat))

1

Für mich gearbeitet wird.

self.configuration.cellHeight as NSNumber! 
5

Für Swift 3,1

var final_price: CGFloat = 12.34 
let num = final_price as NSNumber