2017-11-15 7 views
1

私はそれがエラーを与えているSWIFT 3から迅速4.に私の既存のアプリを変換しています:'部分文字列(from :)'は推奨されていません:文字列の部分文字列を 'partial range from'演算子で使用してください。スウィフト4エラー

'substring(from:)' is deprecated: Please use String slicing subscript with a 'partial range from' operator.

'characters' is deprecated: Please use String or Substring directly

マイSWIFT 3のコードは次のとおりです。

public convenience init?(hexString: String, alpha: Float) { 
    var hex = hexString 

    // Check for hash and remove the hash 
    if hex.hasPrefix("#") { 
     hex = hex.substring(from: hex.characters.index(hex.startIndex, offsetBy: 1)) 
    } 

    if (hex.range(of: "(^[0-9A-Fa-f]{6}$)|(^[0-9A-Fa-f]{3}$)", options: .regularExpression) != nil) { 

     // Deal with 3 character Hex strings 
     if hex.characters.count == 3 { 
      let redHex = hex.substring(to: hex.characters.index(hex.startIndex, offsetBy: 1)) 
      let greenHex = hex.substring(with: (hex.characters.index(hex.startIndex, offsetBy: 1) ..< hex.characters.index(hex.startIndex, offsetBy: 2))) 
      let blueHex = hex.substring(from: hex.characters.index(hex.startIndex, offsetBy: 2)) 

      hex = redHex + redHex + greenHex + greenHex + blueHex + blueHex 
     } 

     let redHex = hex.substring(to: hex.characters.index(hex.startIndex, offsetBy: 2)) 
     let greenHex = hex.substring(with: (hex.characters.index(hex.startIndex, offsetBy: 2) ..< hex.characters.index(hex.startIndex, offsetBy: 4))) 
     let blueHex = hex.substring(with: (hex.characters.index(hex.startIndex, offsetBy: 4) ..< hex.characters.index(hex.startIndex, offsetBy: 6))) 

     var redInt: CUnsignedInt = 0 
     var greenInt: CUnsignedInt = 0 
     var blueInt: CUnsignedInt = 0 

     Scanner(string: redHex).scanHexInt32(&redInt) 
     Scanner(string: greenHex).scanHexInt32(&greenInt) 
     Scanner(string: blueHex).scanHexInt32(&blueInt) 

     self.init(red: CGFloat(redInt)/255.0, green: CGFloat(greenInt)/255.0, blue: CGFloat(blueInt)/255.0, alpha: CGFloat(alpha)) 
    } 
    else { 
     self.init() 
     return nil 
    } 
} 

私はそれをSwift 4に変換できますか?文字列を使用するか、SWIFT 4内の文字列を介して直接このため、直接

ループをすることができますサブストリングくださいので、文字列への必要はありません。

答えて

1

「文字」を推奨されていません。

そして

「(から:)ストリング」の

が廃止されました:演算子「から一部の範囲」で文字列のスライス添字を使用してください。

How can I use String slicing subscripts in Swift 4?

関連する問題