2016-03-22 21 views
0

Bir dizeyi taramak ve ondan bir çift çıkarmak için NSScanner kullanıyorum. İşte yazdırırNSScanner scanDouble UnsafeMutablePointer

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) 

sorunu denemek ve çözmek benim korumalı kod:

7 
0x0000000000000000 

Yani ilk iki çağrıları dize çalışmalarının ilk bölümünü tüketmek, ama sonra bir çift tarayarak değil Çalışma.

var double = 0.0 
scanner.scanDouble(&double) 

Ama bu artık Swift çalışmak görünmüyor:

Ben şuna benzer diğer çözümler gördüm. Belki daha önceki bir versiyonda mıydı?

Bunu nasıl düzeltebilirim?

+0

Hala benim için çalışıyor –

cevap

0

scanner2.scanDouble yerine scanner.scanDouble kullanarak yanlışlıkla bir yazım hatası yaşadınız mı acaba?

Bu benim için çalışıyor:

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) 
+0

Evet! bu işe yarıyor. Komik Çok fazla şey denedim. Temelde bunu denedim ve şimdi ne yaptığımı '' aDoubleNumber '' tanımladım, bu yüzden bir derleme hatası alıyorum ve '' UnsageMutablePointer '' in non-inout argümanı ile kullanıldığını 'farkettim. & ile bir referans. – gngrwzrd

İlgili konular