Ios pathExtension不可用:请改为在NSURL上使用pathExtension。Swift 2.0
我从文档目录中获取mp3文件,我写道pathExtension等于“mp3”,在Swift 1.2中它可以工作,但在Swift 2.0中我得到错误“'pathExtension'不可用:在NSURL上使用pathExtension。”Ios pathExtension不可用:请改为在NSURL上使用pathExtension。Swift 2.0,ios,xcode,swift,swift2,Ios,Xcode,Swift,Swift2,我从文档目录中获取mp3文件,我写道pathExtension等于“mp3”,在Swift 1.2中它可以工作,但在Swift 2.0中我得到错误“'pathExtension'不可用:在NSURL上使用pathExtension。” 只需更改顺序:首先是过滤器,然后是映射。现在,将方法pathExtension应用于NSURL对象 listOfMP3Files = directoryURLs.filter { $0.pathExtension == "mp3" }.map { $0.lastP
只需更改顺序:首先是
过滤器
,然后是映射
。现在,将方法pathExtension
应用于NSURL对象
listOfMP3Files = directoryURLs.filter { $0.pathExtension == "mp3" }.map { $0.lastPathComponent! }
您可以使用尾随闭包
规则省略过滤器
和映射
之后的一对括号
Apple已从
String
中删除与路径相关的API,以选择更合适的URL
,或者您可以使用此扩展:
extension String {
var ns: NSString {
return self as NSString
}
var pathExtension: String {
return ns.pathExtension
}
var lastPathComponent: String {
return ns.lastPathComponent
}
}
Xcode 8.3.2•Swift 3.1
extension String {
var fileURL: URL {
return URL(fileURLWithPath: self)
}
var pathExtension: String {
return fileURL.pathExtension
}
var lastPathComponent: String {
return fileURL.lastPathComponent
}
}
要使其向后兼容Swift 2.0中的1.2,请执行以下操作:
改进@Dharmesh Kheni的版本
extension String {
var ns: NSString {
return self as NSString
}
var pathExtension: String {
return ns.pathExtension ?? ""
}
var lastPathComponent: String {
return ns.lastPathComponent ?? ""
}
}
我结合了达尔梅什和利奥的方法,让我的扩展工作:
extension String {
public var url: NSURL {
return NSURL(fileURLWithPath:self)
}
public var stringByDeletingLastPathComponent: String {
return String(url.URLByDeletingLastPathComponent)
}
}
基于此,此扩展将在许多情况下帮助您
extension String {
var lastPathComponent: String {
get {
return (self as NSString).lastPathComponent
}
}
var pathExtension: String {
get {
return (self as NSString).pathExtension
}
}
var stringByDeletingLastPathComponent: String {
get {
return (self as NSString).stringByDeletingLastPathComponent
}
}
var stringByDeletingPathExtension: String {
get {
return (self as NSString).stringByDeletingPathExtension
}
}
var pathComponents: [String] {
get {
return (self as NSString).pathComponents
}
}
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.stringByAppendingPathComponent(path)
}
func stringByAppendingPathExtension(ext: String) -> String? {
let nsSt = self as NSString
return nsSt.stringByAppendingPathExtension(ext)
}
}
看起来确实很不错,但NSString铸造可能更便宜;-)我需要结合Dharmesh和Leo的方法来让我的扩展工作:
扩展字符串{public var url:NSURL{return NSURL(fileURLWithPath:self)}public var stringByDeletingLastPathComponent:String{return String(url.URLByDeletingLastPathComponent)}
extension String {
var lastPathComponent: String {
get {
return (self as NSString).lastPathComponent
}
}
var pathExtension: String {
get {
return (self as NSString).pathExtension
}
}
var stringByDeletingLastPathComponent: String {
get {
return (self as NSString).stringByDeletingLastPathComponent
}
}
var stringByDeletingPathExtension: String {
get {
return (self as NSString).stringByDeletingPathExtension
}
}
var pathComponents: [String] {
get {
return (self as NSString).pathComponents
}
}
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.stringByAppendingPathComponent(path)
}
func stringByAppendingPathExtension(ext: String) -> String? {
let nsSt = self as NSString
return nsSt.stringByAppendingPathExtension(ext)
}
}