我尝试获取路径的前n个部分:
var rootPath = "/p1/p2"
var filePath = "/p1/p2/p3/p4/file.ext"
我希望获得比rootPath = 3
文件夹深度使用更多的内容:
result = "/p1/p2/p3/"
我尝试使用内置数组组件,但我不知道如何将其限制为特定数字:
func getRootFolderRel(rootURL : URL, fileURL : URL, relIndex : Int) -> String {
let pccount = rootURL.pathComponents.count + 1
var count = 0
return fileURL.pathComponents.reduce("", { count += 1 < pccount ? $0.stringByAppendingPathComponent(pathComponent: $1) : $0 })
}
任何提示? (它应该尽可能快): - )
补充:(我写了一个工作函数,但它没有使用内部命令。一切都是由我完成的,所以我认为,与基于内置函数的解决方案相比,这是非常慢的。)
func getRootFolderRel(rootURL : URL, fileURL : URL, relIndex : Int) -> String {
let pccount = rootURL.pathComponents.count + relIndex
var array = [String]()
var count = 0
while count < pccount && count < rootURL.pathComponents.count {
array.append(rootURL.pathComponents[count])
count += 1
}
let offset = count
while count < pccount && count < fileURL.pathComponents.count {
array.append(fileURL.pathComponents[count])
count += 1
}
return array.reduce("", { $0.stringByAppendingPathComponent($1) })
}