2015-09-19 64 views
0

我升級我的代碼爲斯威夫特2,在這裏我得到了一個錯誤:不能調用類型「NSURL」初始化類型「(fileURLWithPath:NSURL)」的參數列表

不能援引NSURL類型初始化與類型(fileURLWithPath: NSURL)

這裏的參數列表的代碼:

let dirPaths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) 
    let docsDir = dirPaths[0] 
    let soundFilePath = NSURL(fileURLWithPath: docsDir).URLByAppendingPathComponent("sound.caf") 
    let soundFileURL = NSURL(fileURLWithPath: soundFilePath) 
    //The error goes here. 

回答

2

語法fileURLWithPath

public init(fileURLWithPath path: String) 

這意味着它只接受String作爲參數。你通過NSURL作爲參數。

而且你可以解決這樣說:

let dirPaths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) 
let docsDir = dirPaths[0] 
let soundFilePath = (docsDir as NSString).stringByAppendingPathComponent("sound.caf") 
let soundFileURL = NSURL(fileURLWithPath: soundFilePath) 

這裏是分機,如果您想使用:

extension String { 

    func stringByAppendingPathComponent(path: String) -> String { 

     return (self as NSString).stringByAppendingPathComponent(path) 
    } 
} 

你也可以使用這種方式:

let soundFilePath = docsDir.stringByAppendingPathComponent("sound.caf") 
let soundFileURL = NSURL(fileURLWithPath: soundFilePath) 
+0

更換

let soundFilePath = NSURL(fileURLWithPath: docsDir).URLByAppendingPathComponent("sound.caf") let soundFileURL = NSURL(fileURLWithPath: soundFilePath) 

在斯威夫特2'stringByAppendingPathComponent'被刪除,這就是爲什麼我升級我的代碼。但無論如何,這是非常有用的。 –

+0

高興地幫助你.. :) –

0

你試圖從一個NSURL對象創建一個NSURL,沒有這個初始化器。要創建正確的URL只是

let soundFileURL = NSURL(fileURLWithPath: docsDir).URLByAppendingPathComponent("sound.caf") 
相關問題