Выражение разрешает неиспользуемую функцию
Прежде всего позвольте мне сказать, что я очень новичок в программировании. То, что я пытаюсь сделать, это добавить кнопку, которая при нажатии играет музыку, а при повторном нажатии музыка останавливается. В идеале, когда кнопка нажата в третий раз, музыка будет иметь 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}
}
}
Ответы
Ответ 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 параметр является глупым в глазах компилятора:)