2016-11-21 3 views
-1

zu spielen Ich bin ziemlich neu zu Xcode entschuldigt daher, wenn das unten eine einfache Lösung erfordert. Habe eine einfache Schaltfläche als Test für ein anderes Projekt erstellt, die mp3-Datei in das Verzeichnis "Supporting Files" importiert und unten ist mein Code, der aufgrund von Tutorials, die alle unterschiedliche Versionen von Xcode verwenden, eine Reihe von Fehlern ergibt .Versuchen, einen Ton mit AVFoundation

AVFoundation wurde ebenfalls zum Projekt hinzugefügt.

Fehler:

Argument labels '(_:, error:)' do -- Extra argument 'error' in call Use of unresolved identifier 'alertSound'

Code:

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 

    var AudioPlayer = AVAudioPlayer() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     let alertSound = NSURL(fileURLWithPath: Bundle.main.path(forResource: "two", ofType: "mp3")!) 
     print(alertSound) 

     AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) 
     AVAudioSession.sharedInstance().setActive(true, error: nil) 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func n2(_ sender: UIButton) { 

     var error:NSError? 
     AudioPlayer = AVAudioPlayer(contentsOfUrl: alertSound, error: &error) 
     AudioPlayer.prepareToPlay() 
     AudioPlayer.play() 
    } 
} 
+0

Nur eine Randnotiz, aber Sie sollten einheitliche Benennungsregeln folgen, wenn der Benennung von Variablen, das heißt 'AudioPlayer' sollte' audioPlayer' sein. Siehe https://swift.org/documentation/api-design-guidelines/ –

Antwort

1

Zum ersten Fehler: Argument Labels '(_ :, Fehler :)' do - Extra Argument ‚Fehler 'in call

Objective C-Funktion, die einen Fehlerparameter enthält und einen booleschen Wert zurückgibt wird als eine Funktion markiert, die möglicherweise Ausnahmen in Swift 3 auslösen kann. Sie können den Fehler mit einem do..try..catch-Konstrukt behandeln.

können Sie prüfen, Apple-Dokumentation auf Fehler hier Handhabung: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html

Der andere Fehler auf die Variable eine lokale Variable sein, die im Zusammenhang Audioplayer außerhalb des Bereichs zugegriffen wird.

var AudioPlayer = AVAudioPlayer() 

// Declare alertSound at the instance level for use by other functions. 
let alertSound = URL(fileURLWithPath: Bundle.main.path(forResource: "two", ofType: "mp3")!) 

override func viewDidLoad() { 
    super.viewDidLoad() 

    print(alertSound) 

    do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
     try AVAudioSession.sharedInstance().setActive(true) 
    } 
    catch { 
     print("ERROR: \(error.localizedDescription)") 
    } 
} 

@IBAction func n2(_ sender: UIButton) { 

    do { 
     AudioPlayer = try AVAudioPlayer(contentsOf: alertSound) 
     AudioPlayer.prepareToPlay() 
     AudioPlayer.play() 
    } 
    catch { 
     print("ERROR: \(error.localizedDescription)") 
    } 
}