NSScanner scanDouble UnsafeMutablePointer

NSScanner scanDouble UnsafeMutablePointer

我正在使用 NSScanner 扫描字符串并从中提取双精度数。这是我尝试解决问题的沙盒代码

let string = "maxage=1234567890"
let scanner2 = NSScanner(string: string)
scanner2.scanUpToString("=", intoString: nil)
scanner2.scanString("=", intoString: nil)
let maxage2:UnsafeMutablePointer<Double> = UnsafeMutablePointer<Double>()
scanner.scanDouble(maxage2)
print(scanner2.scanLocation)
print(maxage2)

它打印:

7
0x0000000000000000

因此,前两次使用字符串第一部分的调用有效,但随后扫描双精度无效。

我见过类似这样的其他解决方案:

var double = 0.0
scanner.scanDouble(&double)

但这似乎不再适用于 Swift。也许它在早期版本中有?

我该如何解决这个问题?

我想知道你是否不小心用 scanner.scanDouble 而不是 scanner2.scanDouble 打错了字?

这对我有用:

let string = "maxage=1234567890"
let scanner2 = NSScanner(string: string)
scanner2.scanUpToString("=", intoString: nil)
scanner2.scanString("=", intoString: nil)
var aDoubleNumber = 0.0
scanner2.scanDouble(&aDoubleNumber)
print(scanner2.scanLocation)
print(aDoubleNumber)