Convert String to CGFloat in Swift

后端 未结 12 1164
长情又很酷
长情又很酷 2021-02-03 17:05

I\'m new to Swift, how can I convert a String to CGFloat?

I tried:

var fl: CGFloat = str as CGFloat
var fl: CGFloat = (CGFloat)str
var fl: CGFloat = CGFl         


        
12条回答
  •  独厮守ぢ
    2021-02-03 17:39

    As of Swift 2.0, the Double type has a failable initializer that accepts a String. So the safest way to go from String to CGFloat is:

    let string = "1.23456"
    var cgFloat: CGFloat?
    
    if let doubleValue = Double(string) {
        cgFloat = CGFloat(doubleValue)
    }
    
    // cgFloat will be nil if string cannot be converted
    

    If you have to do this often, you can add an extension method to String:

    extension String {
    
      func CGFloatValue() -> CGFloat? {
        guard let doubleValue = Double(self) else {
          return nil
        }
    
        return CGFloat(doubleValue)
      }
    }
    

    Note that you should return a CGFloat? since the operation can fail.

提交回复
热议问题