2016-03-22 27 views
-2

prepareForSegue numaralı telefonumla bazı sorunlar yaşıyorum. Ne zaman bir sonraki görüş kontrolcüsüne başvurmaya çalışırım. Bir hata alır ve tripLikes'i sonraki görüntüleme denetleyicisine aktardığım noktada çöker.Int olarak String olarak döküm başarısız oluyor

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "toDetailScene") { 


     //Hooking up places-holder values 
     let viewController = segue.destinationViewController as! DetailViewController 

     let cell = sender as! CustomPFTableViewCell 


     viewController.tripName = cell.nameTextLabel.text! 
     viewController.tripAuthor = cell.authorTextLabel.text! 
     viewController.tripLikes = Int(cell.numLikes.text!)! 
     viewController.tripDescrip = cell.descriptionHolder 

    } 
} 

Geçirdiğimiz her bir değer, hedef görünüm denetleyicisindeki değerlerdir.

+0

başarısız sebebi nedir? –

+2

Zorla sökmeyi kullanmaya başladığınız ana kadar bir acı dünyasında olacaksınız. Kodunuzda artık 'xxx! 'Görmediğiniz gün aydınlanma günü olacaktır. Ciddi anlamda. 'If' veya eşdeğer bir şey kullanın. – Moritz

+0

cell.numLikes.text dosyasının değeri nedir! ? – UlyssesR

cevap

4

Int(cell.numLikes.text!)! ile çok fazla güç kullanmadan bir şeyler yapıyorsunuz. Bu değerlerden herhangi biri nil ise, programınız çökecektir.

Neden denemek böyle bir if-let akışı daha güvenli bir şey:

if let text = cell.numLikes.text { 
    if let textInt = Int(text) { 
     viewController.tripLikes = textInt 
    } else { // Int cannot be constructed from input 
     viewController.tripLikes = 0 
    } 
} else { // cell.numLikes.text was nil 
    viewController.tripLikes = 0 
} 
İlgili konular