【问题标题】:value of type 'Scanner' has no member 'scanHexInt32''Scanner' 类型的值没有成员 'scanHexInt32'
【发布时间】:2017-08-26 07:30:31
【问题描述】:

当我为 Mac 编译我的 Swift 项目时,它编译得很好,但是当我在 Ubuntu 16.04 中编译相同的代码时,我得到了以下错误。

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

是什么原因?

【问题讨论】:

    标签: macos swift3 ubuntu-16.04 perfect


    【解决方案1】:

    它需要不同的标志:

        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 上都测试过了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2018-01-15
      • 2017-04-28
      相关资源
      最近更新 更多