Подтвердить что ты не робот

Выражение разрешает неиспользуемую функцию

Прежде всего позвольте мне сказать, что я очень новичок в программировании. То, что я пытаюсь сделать, это добавить кнопку, которая при нажатии играет музыку, а при повторном нажатии музыка останавливается. В идеале, когда кнопка нажата в третий раз, музыка будет иметь reset. Пока я пытаюсь добиться этого, я получаю сообщение об ошибке "Expression разрешает неиспользуемую функцию", так как я очень новый, вся помощь, которую я нахожу в Интернете, не имеет для меня никакого смысла.

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}
}
}
4b9b3361

Ответ 1

Наплыв сюда после комментария Мартина R...

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

В этой строке вы не вызываете функции stop и play, а просто получаете доступ к ним. Resolving to an unused function пытается сказать вам, что у вас есть выражение, возвращающее тип функции, но вы его никогда не вызываете (audioPlayer.stop и audioPlayer.play - это выражения, о которых идет речь здесь).

Чтобы избавиться от этой ошибки и, вероятно, создать правильное поведение, попробуйте вызвать функции.

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

Ответ 2

Здесь приведена упрощенная версия ответа Брайана:

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

Ответ 3

Swift 4: просто добавьте фигурные скобки() рядом с именем метода

override func viewWillAppear(_ animated: Bool) {
   addView //error: Expression resolves to an unused function
}

func addView(){
}

Решение:

override func viewWillAppear(_ animated: Bool) {
   addView()
}

Ответ 4

if audioPlayer.playing { audioPlayer.stop} else { audioPlayer.play} - это просто доступ к переменным-членам. Это не делать все.

Я уверен, что вы намерены сделать audioPlayer.stop() и audioPlayer.start().

Однако просто для того, чтобы объяснить ОШИБКУ и не решить вашу проблему: если бы вы сделали что-то вроде

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

Тогда вы действительно делали что-то, что вы были set ting параметром. доступ или просто get ting параметр является глупым в глазах компилятора:)