types'String'的值没有成员'stringByTrimmingCharactersInSet'

将我的项目转换为swift 3后,我得到以下Value of type 'String' has no member 'stringByTrimmingCharactersInSet'错误在这个块的第一行:

 extension UIColor { convenience init (hex:String) { var cString:String = hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).uppercased() // error appears on this line if (cString.hasPrefix("#")) { cString = (cString as NSString).substring(from: 1) } let rString = (cString as NSString).substring(to: 2) let gString = ((cString as NSString).substring(from: 2) as NSString).substring(to: 2) let bString = ((cString as NSString).substring(from: 4) as NSString).substring(to: 2) var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0; Scanner(string: rString).scanHexInt32(&r) Scanner(string: gString).scanHexInt32(&g) Scanner(string: bString).scanHexInt32(&b) self.init(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: CGFloat(1)) } } 

我猜这个错误来源于'stringByTrimmingCharactersInSet'语法的改变。这是什么修正?

新的语法是这样的:

 var cString = hex.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased() 

作为一个build议,你不需要指定cString是一个string,因为这是假定您分配给它的值。

你也可以试试这个。

 let trimmedString = hex.trimmingCharacters(in: CharacterSet.whitespaces) 

阅读Swift 3文档; 新的Swift 3 API是:

 func trimmingCharacters(in set: CharacterSet) -> String 

https://developer.apple.com/reference/swift/string/1643030-trimmingcharacters