2017-04-22 2 views
0

私のクラスのデシベル測定アプリケーションで作業していますが、次のエラーが発生して困っています: 'あいまいな使用appendingPathComponent'。問題が発生しているのはここです:私はこれを取得するように見えることはできませんvar = strが 'appendingPathComponentのあいまいな使用'エラーを生成する

var str = documents.appendingPathComponent("recordTest.caf") 

は//エラーがここで起こっている

var documents: AnyObject = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0] as AnyObject 
    var str = documents.appendingPathComponent("recordTest.caf") 
    var url = NSURL.fileURL(withPath: str as String) 

オーディオファイルのURLを設定します解決されました。

ヘルプ、 ポール

+0

あなたは注釈を付けないのはなぜ/ AnyObject' 'キャストは正確にSTRING'は'ことを知っています戻ってきた? **コンパイラが推論できる型に注釈を付けないでください**。 – vadian

答えて

1

は、なぜあなたはAnyObjectからdocumentsをキャストしていますか?それを取り除く。

しかし、appendingPathComponentNSString,NSURL、またはURLの方法であるため、新しい問題が発生します。しかしdocumentsStringです。

URLの代わりにNSURLを使用するのはなぜですか?

あなたの目標はURLを得ることですので、FileManagerとのより直接的なアプローチを使用:あなたは(になっている)が、

let docURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) 
let url = docURL.appendingPathComponent("recordTest.caf") 
+0

試してみてください!それは悪い練習です –

+1

@OlegGordiichukはい、通常はそうです。 'do/catch'を使うようにこのコードを更新することもできますし、ユーザーのDocumentsフォルダが常にそこにあり、これが失敗することはないと考えてください。 – rmaddy

+0

@OlegGordiichuk 'try! 'は、*試み*が失敗しないことが保証されている場合(この場合のように)、良い習慣です。 – vadian

関連する問題