2015-04-09 4 views
14

Zunächst möchte ich sagen, dass ich sehr neu im Programmieren bin. Was ich versuche, ist, eine Taste hinzuzufügen, die beim Drücken Musik spielt, und wenn sie erneut gedrückt wird, stoppt die Musik. Im Idealfall, wenn die Taste ein drittes Mal gedrückt wird, wird die Musik zurückgesetzt. Beim Versuch, dies zu erreichen, erhalte ich die Fehlermeldung "Der Ausdruck löst eine ungenutzte Funktion aus", da ich sehr neu bin, macht die Hilfe, die ich online finde, für mich keinen Sinn.Ausdruck wird in eine unbenutzte Funktion aufgelöst

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 
    @IBOutlet weak var janitor: UIImageView! 
    var pianoSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("C", ofType: "m4a")!) 
    var audioPlayer = AVAudioPlayer() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     audioPlayer = AVAudioPlayer(contentsOfURL: pianoSound, error: nil) 
     audioPlayer.prepareToPlay() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 


     @IBAction func PianoC(sender: AnyObject) { 

     audioPlayer.play() 

      if audioPlayer.playing { audioPlayer.stop} else { audioPlayer.play} 
} 
} 
+7

'stop' ->' stop() ',' play' -> 'play()' ... –

Antwort

21

hier Swooping nach Martin R Kommentar ...

if audioPlayer.playing { audioPlayer.stop} else { audioPlayer.play} 

Auf dieser Linie, die Sie anrufen, nicht die stop und play Funktionen, sondern einfach auf sie zugreifen. Resolving to an unused function versucht Ihnen zu sagen, dass Sie einen Ausdruck haben, der einen Funktionstyp zurückgibt, aber Sie rufen ihn nie auf (audioPlayer.stop und audioPlayer.play sind die fraglichen Ausdrücke hier).

Um sich von diesem Fehler zu befreien und wahrscheinlich das richtige Verhalten zu erzeugen, versuchen Sie Aufruf die Funktionen.

if audioPlayer.playing { 
    audioPlayer.stop() 
} else { 
    audioPlayer.play() 
} 
+0

Danke! Es funktioniert gut. – Raja

4

Hier ist eine vereinfachte Version von Brian Antwort:

audioPlayer.playing 
    ? audioPlayer.stop() 
    : audioPlayer.play() 
+1

aber nicht einfacher zu verstehen ... – Fr4nc3sc0NL

+0

@ Fr4nc3sc0NL Warum ist das? –

+1

@RudolfAdamkovic Sie erklären nicht, was dieser Code tut – grooveplex

0

if audioPlayer.playing { audioPlayer.stop} else { audioPlayer.play} ist nur die Elementvariablen zugreifen. Es ist nicht tun alles.

Ich bin sicher, dass Sie beabsichtigten, audioPlayer.stop() und audioPlayer.start() zu tun.

jedoch nur um den Fehler zu erklären und nicht Ihr Problem zu lösen: Sie so etwas wie

if audioPlayer.playing { self.playerStatus= audioPlayer.stop} else { self.playerStatus = audioPlayer.play} 

Dann wurden Sie eigentlich tun etwas waren Sie set ting ein Parameter getan hatte. Zugriff oder nur get ting ein Parameter ist in den Augen des Compilers dumm :)

Verwandte Themen