2017-08-26 11 views
0

SwiftプロジェクトをMac用にコンパイルするとうまくコンパイルできますが、同じコードをUbuntu 16.04でコンパイルするとエラーが発生します。'Scanner'タイプの値に 'scanHexInt32'というメンバーはありません

value of type 'Scanner' has no member 'scanHexInt32' 
     if Scanner(string: self).scanHexInt32(&value) { 
      ^~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ 
Foundation.Scanner:8:17: note: did you mean 'scanHexInt'? 
    public func scanHexInt(_ result: UnsafeMutablePointer<UInt32>) -> Bool 

どのような理由がありますか?

答えて

0

それは別のフラグが必要です。

import Foundation 

    public extension String { 
     public func scanHex() -> UInt32? { 
     var value = UInt32(0) 
     #if os(Linux) 
     if Scanner(string: self).scanHexInt(&value) { 
      return value 
     } else { 
      return nil 
     } 
     #else 
     if Scanner(string: self).scanHexInt32(&value) { 
      return value 
     } else { 
      return nil 
     } 
     #endif 
     } 
    } 

    if let x = "0x100".scanHex() { 
     print("scanned:", x) 
    } else { 
     print("scan failed") 
    } 

このmain.swiftは、MAC/Linuxの両方で試験しました。

関連する問題