

swift初心者です。  
音を出すアプリを試しに作っていますが下記エラーにはまってしまい進みません。  
Argument labels (contetsOF, fileTypeHint) do not match any available overloads

解決方法を教えていただけますと幸いです。  
コードは以下の通りです。

[code]

    //
    //  ViewController.swift
    //  MyMusic
    //
    //  Created by 名前 on 2016/11/05.
    //  Copyright © 2016年 mycompany. All rights reserved.
    //
    
    import UIKit
    import AVFoundation
    
    class ViewController: UIViewController {
    
      override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
      }
    
      override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
      }
    
      //シンバルの音源ファイル
      var cymbalPath = Bundle.main.bundleURL.appendingPathComponent("cymbal.mp3")
    
      //シンバル用のプレイヤーインスタンスを作成
      var cymbalPlayer = AVAudioPlayer()
    
      @IBAction func cymbal(_ sender: Any) {
        do{
        //シンバル用のプレイヤーに音源ファイル名を指定
        cymbalPlayer = try AVAudioPlayer(contetsOF: cymbalPath, fileTypeHint: nil)
        cymbalPlayer.play()
        } catch {
            print("シンバルでエラーが発生しました。")
        }
    
      }
    
    }
    
[/code]


CC BY-SA 3.0
2016-11-05T10:28:46.013
30120
2016-11-05T10:59:13.173
19443
question
swift
Argument labels (contetsOF, fileTypeHint) do not match any available overloadsの解決方法


基本は単純な綴りミスです。自分が本当は何をしたいのかをしっかり確かめた上で公式リファレンス等で確認しましょう。

[AVAudioPlayer](https://developer.apple.com/reference/avfoundation/avaudioplayer)

>
[code]

>     init(contentsOf: URL, fileTypeHint: String?)
>  
[/code]

>
> Initializes and returns an audio player using the specified URL and  
>  file type hint.

`contetsOF:`ではなくて、`contentsOf:`ですね。(大文字小文字の違いにも注意。)

* * *

できればこの機会に、他のお勧めできない書き方も改められてはいかがでしょうか。

[code]

    class ViewController: UIViewController {
    
        //...
    
        //シンバルの音源ファイル
        //Bundle 内のリソースファイルにアクセスする場合はbundleURLからのパスを作るのではなく、`url(forResource:withExtension:)`を使った方が良い
        //「私のアプリをクラッシュさせて」演算子(`!`)は使わない方が良い場合も多いが、ここでは、アプリの構成が悪ければクラッシュで知らせるように意図的に使用している
        var cymbalPath = Bundle.main.url(forResource: "cymbal", withExtension: "mp3")!
    
        //シンバル用のプレイヤープロパティを宣言
        //`= AVAudioPlayer()`と言う宣言は同時に使いもしないインスタンスを生成してしまっている
        var cymbalPlayer: AVAudioPlayer?
    
        @IBAction func cymbal(_ sender: Any) {
            do{
                //シンバル用のプレイヤーインスタンスを作成
                //contetsOF ではなく contentsOf
                //ヒントを与えないなら`init(contentsOf:)`を使った方が良い
                cymbalPlayer = try AVAudioPlayer(contentsOf: cymbalPath)
                cymbalPlayer?.play()
            } catch {
                print("シンバルでエラーが発生しました。")
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2016-11-05T10:59:13.173
30122
2016-11-05T10:59:13.173
13972
30120
answer