Après la conversion de mon projet en Swift 3, l'erreur Value of type 'String' has no member 'stringByTrimmingCharactersInSet'
suivante apparaît sur la première ligne de ce bloc:
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))
}
}
Je suppose que l'erreur provient d'un changement de syntaxe avec 'stringByTrimmingCharactersInSet'
.. quelle est la correction pour cela?
La nouvelle syntaxe est la suivante:
var cString = hex.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased()
À titre de suggestion, vous n'avez pas besoin de spécifier que cString
est une chaîne, car cela est supposé avec la valeur que vous lui affectez.
Vous pouvez essayer cela aussi.
let trimmedString = hex.trimmingCharacters(in: CharacterSet.whitespaces)
Lisez la documentation de Swift 3; la nouvelle API Swift 3 est:
func trimmingCharacters(in set: CharacterSet) -> String
https://developer.Apple.com/reference/Swift/string/1643030-trimmingcharacters