【问题标题】: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 上都测试过了。