web-dev-qa-db-fra.com

La valeur de type 'String' n'a pas de membre 'stringByTrimmingCharactersInSet'

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?

20
Robert Tillman

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.

36
Vladimir Nul

Vous pouvez essayer cela aussi.

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

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

0
dannyzlo