pathExtension不可用:改为在NSURL上使用pathExtension.Swift 2.0

Ale*_*tev 13 xcode ios swift swift2

我从文档目录中获取mp3文件,我写道,pathExtension等于"mp3",在Swift 1.2中它正在工作,但是在Swift 2.0中我得到错误"'pathExtension'不可用:在NSURL上使用pathExtension."

 func fetchFilesFromFolder() {
        let fileManager = NSFileManager.defaultManager()
        let folderPathURL = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)[0]
        if let directoryURLs = try? fileManager.contentsOfDirectoryAtURL(folderPathURL, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles) {
            listOfMP3Files = directoryURLs.map(){ $0.lastPathComponent! }.filter(){ $0.pathExtension == "mp3" } // error is here
        }
    }
Run Code Online (Sandbox Code Playgroud)

Dha*_*esh 12

或者您可以使用此扩展程序:

extension String {
    var ns: NSString {
        return self as NSString
    }
    var pathExtension: String {
        return ns.pathExtension
    }
    var lastPathComponent: String {
        return ns.lastPathComponent
    }
}
Run Code Online (Sandbox Code Playgroud)


vad*_*ian 3

只需更改顺序:首先filter,然后map。现在该方法pathExtension应用于 NSURL 对象。

listOfMP3Files = directoryURLs.filter { $0.pathExtension == "mp3" }.map { $0.lastPathComponent! }
Run Code Online (Sandbox Code Playgroud)

您可以使用该规则省略filter和后面的一对括号。maptrailing closure

Apple 已删除与路径相关的 API,以String选择更合适的URL.