iOS8,Swift:fileURLWithPath - 缺少参数错误的参数

时间:2014-12-23 19:54:25

标签: ios swift nsurl

我正在尝试使用方法将子目录追加到文档目录:

class func fileURLWithPath(path: String) -> NSURL?`

代码:

let applicationDocumentsDirectory:String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
let storesDirectory:NSURL = NSURL.fileURLWithPath(applicationDocumentsDirectory).URLByAppendingPathComponent("Stores")

获取错误

  

参数' isDirectory'缺少参数在电话中。

我真的不明白,为什么编译器需要这个参数?界面中没有提到它?

提前Thnanx

1 个答案:

答案 0 :(得分:1)

问题在于,当链中存在选项时,您正试图链接方法。

NSURL.fileURLWithPath(applicationDocumentsDirectory)返回NSURL?类型。当您尝试对其执行方法URLByAppendingPathComponent时,会抛出编译器错误。

我知道编译器错误与真正的原因完全无关,但它只是当前Swift版本之美。

使用!打开包装,它会正常工作:

let storesDirectory:NSURL = 
NSURL.fileURLWithPath(applicationDocumentsDirectory)!
     .URLByAppendingPathComponent(NFConstants.NFCoreDataStringIdentifiers.CoreDataStoresPathComponent.rawValue)

当然强行打开可选项可能会导致崩溃,所以更好地使用if let成语:

if let baseUrl = NSURL.fileURLWithPath(applicationDocumentsDirectory) {
    let storeURL = baseUrl.URLByAppendingPathComponent(NFConstants.NFCoreDataStringIdentifiers.CoreDataStoresPathComponent.rawValue)
}