

BGMを再生するアプリを作成したいと思い、手始めにAVFoundationをインポートし、do-try-
catch構文を使ってみようとしましたが、`Expected declarations,Consecutive declarations on a line
must be separated by ';'`が表示され、`;`を入力しても直らないため困っています。  
解決策を教えてください。宜しくお願いします。

[code]

    import AVFoundation //AVFoundationフレームワークをインポートする
    
    class ViewController: UIViewController {
        var player:AVAudioPlayer? //音声を制御するための変数
        let url = NSBundle.mainBundle().bundleURL.URLByAppendingPathComponent(soundName);do{
        try player = AVAudioPlayer(contentsOfURL:url)
        }catch{
        print("Error!")
    }
    }
    
[/code]


CC BY-SA 3.0
2016-01-10T10:26:31.943
20801
2016-09-23T12:27:00.063
2016-09-23T12:27:00.063
5519
13961
question
swift
Expected declarations,Consecutive declarations on a line must be separated by ';'の原因


あなたのコードを;を使わないように修正した上で、インデントしなおすとこのようになります。

[code]

    import AVFoundation //AVFoundationフレームワークをインポートする
    
    class ViewController: UIViewController {
        var player:AVAudioPlayer? //音声を制御するための変数
        let url = NSBundle.mainBundle().bundleURL.URLByAppendingPathComponent(soundName)
        do {//<-このdo文がclass定義の直下にある
            try player = AVAudioPlayer(contentsOfURL:url)
        } catch {
            print("Error!")
        }
    }
    
[/code]

Swiftでは、do文のような実行文はclass定義の直下には書けません。また変数(?)soundNameも宣言されていないようです。必要なメソッドや変数を宣言し、実行文はメソッド内に記述してください。また、1行に複数の文を記述しようとすると構文上のエラーが見つけにくくなるので、慣れるまではできるだけ避けたほうが良いでしょう。


CC BY-SA 3.0
2016-01-11T08:14:36.010
20826
2016-01-11T08:14:36.010
13972
20801
answer