2017-04-22 47 views
0

我正在爲我的課程開發分貝測量應用程序,而且我一直被一個不斷出現的錯誤所困擾:'ambiguous use of appendingPathComponent'。這裏就是發生問題:var = str創建'ambiguous use of appendingPathComponent'錯誤

//設置的URL的音頻文件

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) 

錯誤發生在這裏:

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

我似乎無法得到這個解決。

幫助, 保羅

+0

/儘管您(理應)知道正是'String'是回? **不要註釋編譯器無論如何可以推斷的類型**。 – vadian

回答

1

你爲什麼鑄造documentsAnyObject?擺脫這一點。

但是,這則帶來了自appendingPathComponent一個新的問題是NSStringNSURL,或URL的方法。但documentsString

爲什麼用NSURL代替URL

因爲你的目標是獲得一個URL,請使用FileManager更直接的方法:你爲什麼投注釋`AnyObject`

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!'是一個很好的習慣,如果它確保* try *不會失敗(就像這樣)。 – vadian