2016-11-21 2 views
-1

Я довольно новичок в Xcode, поэтому извиняюсь, если ниже требуется простое исправление. Создали простую кнопку в качестве теста для другого проекта, импортировали mp3-файл в каталог «Поддерживающие файлы», а ниже - мой код, который дает ряд ошибок из-за проведенных мной обучающих программ, в которых все использовались разные версии Xcode ,Попытка воспроизвести звук с использованием AVFoundation

AVFoundation также был добавлен в проект.

Ошибки:

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

Код:

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

Просто обратите внимание, но вы должны следовать правилам согласования имен, когда имена ваших переменных, то есть 'AudioPlayer' должны быть' audioPlayer'. См. Https://swift.org/documentation/api-design-guidelines/ –

ответ

1

Для первой ошибки: Аргумент метки '(_ :, ошибка :) сделать - дополнительный аргумент «ошибка 'в вызове

Функция Objective C, которая содержит параметр ошибки и возвращает логическое значение будет отмечен как функция, которая потенциально может генерировать исключения в Swift 3. Вы можете обрабатывать ошибку, используя конструкцию do..try..catch.

Вы можете проверить Apple, Документация по обработке ошибок здесь: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html

Другой ошибку, связанную с переменной AudioPlayer являющейся локальной переменной, которая осуществляется доступ за пределами области.

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)") 
    } 
}