Swift

2015-05-12 21 views
9

için NSNumber'i NSTimeInterval'a dönüştürün Swift'de çok yeni olduğum için Swift'de bir tür döküm işinde kaldım. İşte Swift

benim kodudur:

if let matchDateTime = item["matchDate"].number { 
    _matchDateTime=matchDateTime 
} 

println(_matchDateTime)      
let date = NSDate(timeIntervalSince1970:_matchDateTime) 

ama onun bana hata veriyor:

Extra argument timeSinceInterval1970 in call 

o hata, NSTimeInterval ama nasıl NSNumber dönüştürmek olabilir neyin bilmiyorum? Fikrim yok.

Bu konuda bana yardımcı olabilecek herkes.

Şimdiden teşekkürler.

+0

Doğru cevaplar birini kabul için onay işaretini tıklamanız gerekir size verildi. Yukarı-oylama tamamen isteğe bağlıdır, ancak bir soru sorarak, soruya cevap verirse verilen en iyi cevabı kabul etmeniz beklenir. Doğru cevabı kabul etmemek, SO üzerinde kaba kabul edilir. –

+0

Verdiğiniz cevaplardan birini kabul etmeniz veya sorununuzu nasıl çözmediklerini açıklamanız gerekiyor. Doğru bir cevabı kabul etmemek, SO'da çok kötü bir form olarak kabul edilir. –

cevap

5

NSNumber'inizi bir Double'e dönüştürmeyi deneyin. Bu kod, bir oyun alanında çalışır:

let aNumber: NSNumber = 1234567.89 
let aDate = NSDate(timeIntervalSinceReferenceDate: Double(aNumber)) 
+0

Büyük yanıt için Thanx ... – BeingShashi

+2

Ya da benim ya da Blake'in cevabını kabul etmelisiniz. İkiniz de probleminizi çözebilirsiniz. Daha rahat olduğun birini seç. –

27

NSTimeInterval sadece typedaliased Double olduğunu. Bu nedenle NSNumber dan NSTimeInterval için döküm

:

let myDouble = NSNumber(double: 1.0) 
let myTimeInterval = NSTimeInterval(myDouble.doubleValue) 

Düzenleme: Ve tersi geçerlidir.

let myTimeInterval = NSTimeInterval(1.0) 
let myDouble = NSNumber(double: myTimeInterval) 

Düzenleme 2: @DuncanC aşağıdaki yorum belirttiği üzere, yöntem çağrısında doğrudan yayınlayabileceğim:

let date = NSDate(timeIntervalSince1970: NSTimeInterval(_matchDateTime)) 
+1

Swift, NSNumber ile scalar sayı türleri arasında Objective-C'den daha iyi bir ifadeye sahiptir, bu nedenle 'Double (myDouble)' veya 'NSTimeInterval (myDouble)' sözdizimini de kullanabilirsiniz, burada 'myDouble' cevabınızda olduğu gibi bir NSNumber'dir. –

+0

Swift'in bunu daha iyi bir şekilde ele alması harika. Yine de temizleyici (IMO) olduğu ve Swift'in yeni bir sürümüyle (NSNumber için oluşturulmuş Kakao API'sini kullandığı için) daha az olası olan yukarıdaki yöntemi tercih ediyorum. –

+1

Yeterince adil. Swift'de çalışırken Swift stilini tercih ederim. Kişisel tadı, sanırım. (Ve ben tür döküm gibi çekirdek bir özellik değişiklikleri son derece olası olduğunu düşünüyorum. Bu dilin kısmı iyi tanımlanmıştır.) –