web-dev-qa-db-ja.com

タイプ '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'の構文の変更に由来すると推測しています。これに対する修正は何ですか?

22
Robert Tillman

新しい構文は次のとおりです。

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

提案として、cStringがStringであることを指定する必要はありません。これは、割り当てられている値で想定されるためです。

37
Vladimir Nul

これも試してみてください。

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

Swift 3ドキュメント;新しいSwift 3 APIは次のとおりです。

func trimmingCharacters(in set: CharacterSet) -> String

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

0
dannyzlo