Значение типа "Сканер" не имеет члена "scanHexInt32"
Когда я компилирую свой проект Swift для Mac, он компилируется нормально, но когда я компилирую тот же код в 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
В чем будет причина?
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.