2015-12-15 28 views
18

Mam rozszerzenie w Swift, które zawiera pewne właściwości, które są CGFloat. Problem polega na tym, że nie wiem jak dostać sklepu wartość CGFloat jako NSNumber wykorzystaniem obiektów związanychKonwertuj CGFloat na NSNumber w Swift

Oto kod mam, że nie działa, ale szczegóły tego, co chcę zrobić:

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

    } 
} 

Czy ktoś sposób obejść to?

+0

pozwolić floatInNumber = NSNumber (float: float (floatValue)) –

Odpowiedz

37

Swift 3,0

let myFloat : CGFloat = 1234.5 

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

lub

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

Swift 2

let myNumber = NSNumber(double: myFloat.native) 

lub

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

lub

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

problem z niech myNumber = NSNumber (wartość: float (myFloat)), jest to, że tracą precyzję CGFloat 0,4 => Float 0,400000006 – CiNN

7

Swift 3

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

1

Dla mnie to działało.

self.configuration.cellHeight as NSNumber! 
5

Swift 3,1

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