質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

1956閲覧

(swift 2)ピアノアプリのコードエラー解決

shun_oga

総合スコア12

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

1クリップ

投稿2015/11/09 10:46

ピアノの鍵盤を押すと音が出るというアプリを作成しており、あるページを参考にして以下のようなコードを書きました。

import UIKit
import AVFoundation

class ViewController: UIViewController {

let pianoKeys = ["C3", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B", "C4"] var audioPlayers:[AVAudioPlayer] = [] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. for key in pianoKeys { let pianoSoundURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sound/\(key)", ofType: "mp3")!) __** let audioPlayer = AVAudioPlayer(contentsOfURL: pianoSoundURL, error: nil)**__ audioPlayer.prepareToPlay() audioPlayers.append(audioPlayer) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func playKey(sender: UIButton) { let keynum = sender.tag audioPlayers[keynum].currentTime = 0 audioPlayers[keynum].play() }

}

太字部分のコードにエラーが出てしまいます。エラーの内容は
Incorrect argument lable in call (have'contentsOfURL:'.error:'.expected'contentsOfURL:fileTypeHint:')

というものです。調べてみても解決策がわからず困っています。どなたか原因のわかる方、教えていただけると幸いです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

参考にされているサイトの情報が古いのだと思います。

swift

1do { 2 let audioPlayer = try AVAudioPlayer(contentsOfURL: pianoSoundURL) 3 audioPlayer.prepareToPlay() 4 audioPlayers.append(audioPlayer) 5} catch { 6 print("error") 7}

投稿2015/11/09 13:19

編集2015/11/10 03:01
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shun_oga

2015/11/09 13:38

回答ありがとうございます。早速試してみたのですが、以下のエラーがでてしまいます。 call can throw, but it is not marked with 'try' and the error is not handled ググってみたものの解決策が見当たらず。。。です。
fuzzball

2015/11/09 14:32

これでどうでしょうか? 今、確認できる環境がないのでダメかも知れませんが‥。
shun_oga

2015/11/10 02:30

試してみたのですが、call can throw, but it is not marked with 'try' とエラーがでます。 そもそもの書き方が良くないのでしょうか・・。
fuzzball

2015/11/10 03:02

失礼しました。AVAudioPlayer の前の try が抜けていました。(回答は修正済)
shun_oga

2015/11/10 06:52

エラーは解決しました!ありがとうございます。ただ、次に let audioPlayer = try AVAudioPlayer(contentsOfURL: pianoSoundURL) の部分に Thread :break point1.1 という緑がけのエラーがでてしまいました。 ググったらbreakpoint は消せるとの記載があったのですが、消せません。どうした解決できるでしょうか。度々すみません。
shun_oga

2015/11/10 16:11

完璧に解決です!!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問