2017-08-26 195 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的测试。

相关问题