wake-up-neo.com

Wert des Typs 'String' hat kein Mitglied 'stringByTrimmingCharactersInSet'

Nachdem ich mein Projekt nach Swift 3 konvertiert habe, erhalte ich in der ersten Zeile dieses Blocks den folgenden Value of type 'String' has no member 'stringByTrimmingCharactersInSet'-Fehler:

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

Ich vermute, der Fehler rührt von einer Syntaxänderung mit 'stringByTrimmingCharactersInSet' her. Was ist die Korrektur dafür?

20
Robert Tillman

Die neue Syntax sieht so aus:

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

Als Vorschlag müssen Sie nicht angeben, dass cString ein String ist, da dies mit dem Wert, den Sie ihm zuweisen, angenommen wird.

36
Vladimir Nul

Sie können dies auch versuchen.

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

Lesen Sie die Swift 3-Dokumentation. Die neue Swift 3 API ist:

func trimmingCharacters(in set: CharacterSet) -> String

https://developer.Apple.com/reference/Swift/string/1643030-trimmingzeichen

0
dannyzlo