2017-08-31 2 views
0

Ich lerne die Codierung nach dem Video auf der Website und der Code funktioniert im Video, funktioniert aber nicht auf meinem Laptop. Ich habe mehrmals nachgesehen, wie ich den gleichen Code wie der Mann im Video gemacht habe. Könnte jemand mir helfen, meinen Code zu überprüfen, bitte, vielen Dank !! (Xcode 9)Swift (xcode 9: Code funktioniert in Tutorial Video): unerwartet gefunden Null beim Entpacken ein optionaler Wert

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 


@IBOutlet weak var darkBlueBG: UIImageView! 
@IBOutlet weak var powerBtn: UIButton! 
@IBOutlet weak var cloudHolder: UIView! 
@IBOutlet weak var rocket: UIImageView! 
@IBOutlet weak var hustleLbl: UILabel! 
@IBOutlet weak var onLbl: UILabel! 

var player: AVAudioPlayer! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let path = Bundle.main.path(forResource: "hustle-on", ofType: "wav")! 
    let url = URL(fileURLWithPath: path) 
    do{ 
     player = try AVAudioPlayer(contentsOf: url) 
     player.prepareToPlay() 
    }catch let error as NSError { 
     print(error.description) 
    } 

} 


@IBAction func powerBtnPressed(_ sender: Any) { 
    cloudHolder.isHidden = false 
    darkBlueBG.isHidden = true 
    powerBtn.isHidden = true 
    UIView.animate(withDuration: 2.3, animations: { 
     self.rocket.frame = CGRect(x: 0, y: 100, width: 375, height: 435) 
    }) { (finished) in 
     self.hustleLbl.isHidden = false 
     self.onLbl.isHidden = false 
    } 
} 
} 
+0

Überprüfen Sie, ob Ihre 'IBOutlet's verbunden sind oder nicht –

+0

Auf welcher Linie App stürzt ab? –

+0

Können Sie uns sagen, in welcher Zeile des Codes der Force Unwrap-Fehler ausgelöst wird? Sie könnten einfach Guard-Anweisungen verwenden, um dies zu verhindern. – zach274

Antwort

0

Stellen Sie sicher, dass IBOutlets verbunden sind. Sie können dies tun, indem Sie auf die Rinne neben ihnen schauen und mit der rechten Maustaste auf den Kreis klicken, der angezeigt wird. Wenn sie nicht verbunden sind, wechseln Sie zu Ihrem Storyboard, löschen Sie die Halbverbindung und fügen Sie sie erneut hinzu.

Andernfalls verwenden

guard let path = Bundle.main.path(forResource: "hustle-on", ofType: "wav") 
else { 
return 
} 

Ich gehe davon aus, dass ist, wo der Fehler auftreten wird.

+0

Hallo, vielen Dank für Ihre Hilfe alec935. Ich habe alle IBOutlets überprüft und sie sind verbunden, und der Code "guard" funktioniert nicht. – UUsss

+0

Kein Problem. Nach dem else {Code eingeben, den Sie ausführen möchten, sollte der Guard fehlschlagen. Schutz wird verwendet, um eine Alternative zum Auspacken der Kraft zu geben, falls das nicht abgewickelte Objekt Null sein sollte. – zach274

0

danke für Ihre Kommentare, ich habe gerade herausgefunden, dass die Audio nicht als die Mitgliedschaft des Projekts ausgewählt wird, wenn ich alle Informationen nachschlagen. Es funktioniert jetzt =)

Verwandte Themen