2017-08-26 101 views
0

當我爲Mac編譯Swift項目時,它編譯得很好,但是當我在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的測試。

相關問題