プロジェクトを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()
提案として、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