Ios 更改URL last component name并向重命名的组件添加扩展名

Ios 更改URL last component name并向重命名的组件添加扩展名,ios,swift3,nsstring,nsurl,Ios,Swift3,Nsstring,Nsurl,我有以下URL file:///Users/ivancantarino/Library/Developer/CoreSimulator/Devices/CCE2FCA5-05F0-4BB7-9A25-CBC168398A62/data/Containers/Data/Application/E48179F9-84FB-4CB3-B993-1E33FCFB5083/Library/Caches/CloudKit/34af81edf8344be1cf473ef394e06ccc8e1bc8cf/As

我有以下
URL

file:///Users/ivancantarino/Library/Developer/CoreSimulator/Devices/CCE2FCA5-05F0-4BB7-9A25-CBC168398A62/data/Containers/Data/Application/E48179F9-84FB-4CB3-B993-1E33FCFB5083/Library/Caches/CloudKit/34af81edf8344be1cf473ef394e06ccc8e1bc8cf/Assets/AE86E028-E4E0-45D5-B5FE-BAE975D07F2A.0166f7df06d2562d8d53e70a3779a46de3769584c3

我试图重命名此url的最后一部分组件,但仍然有一个url,而不仅仅是文件名

我已使用以下代码访问了最后一部分:

func extractAndBreakFilenameInComponents(fileURL: NSURL) {  
    let fileURLParts = fileURL.path!.components(separatedBy: "/")
    let fileName = fileURLParts.last
    print("filename:", fileName)
    // prints: AE86E028-E4E0-45D5-B5FE-BAE975D07F2A.0166f7df06d2562d8d53e70a3779a46de3769584c3
}
我想将
文件名
更改为类似
myFile.pdf
的内容,但保留
URL

这是一个简单的URL重命名,不是创建新的URL,只是更改现有的URL

最好的方法是什么


谢谢你

你也可以这样做

var url = URL.init(string: "http://www.example.com/test123")

url?.deleteLastPathComponent()
url?.appendPathComponent("file.pdf")


print(url)
输出:

希望对你有帮助

编辑

您需要使用以下代码重命名文件

1) 创建、复制和更新最后一个组件

var urlNew = URL.init(string: "http://www.example.com/test123")

urlNew?.deleteLastPathComponent()
urlNew?.appendPathComponent("file.pdf")



              do {
                    try FileManager.default.moveItem(atPath: oldURL!, toPath: urlNew)
                } catch {

                }

你也可以这样做

var url = URL.init(string: "http://www.example.com/test123")

url?.deleteLastPathComponent()
url?.appendPathComponent("file.pdf")


print(url)
输出:

希望对你有帮助

编辑

您需要使用以下代码重命名文件

1) 创建、复制和更新最后一个组件

var urlNew = URL.init(string: "http://www.example.com/test123")

urlNew?.deleteLastPathComponent()
urlNew?.appendPathComponent("file.pdf")



              do {
                    try FileManager.default.moveItem(atPath: oldURL!, toPath: urlNew)
                } catch {

                }

你可以这样做

let fileName = fileURLParts.last
    var newPath = ""
    for i in 0 ..< fileURLParts.count 
    {
        if i == (fileURLParts.count-1) {
            newPath.append(fileName)
        }else{
            newPath.append(fileURLParts[i])
        }

    }
让fileName=fileURLParts.last
var newPath=“”
对于0中的i..
你可以这样做

let fileName = fileURLParts.last
    var newPath = ""
    for i in 0 ..< fileURLParts.count 
    {
        if i == (fileURLParts.count-1) {
            newPath.append(fileName)
        }else{
            newPath.append(fileURLParts[i])
        }

    }
让fileName=fileURLParts.last
var newPath=“”
对于0中的i..
这会改变文件路径本身吗?还是仅仅是指针?我的意思是,文件本身会改变它的名称吗?指针现在会像你说的那样与file.pdf文件在一起吗?问这个问题是因为我可以按照你所说的方式来做,但是当从url访问文件时,它可能找不到它,因为文件名仍处于上一阶段。它会将last test123更改为file.pdf。你需要的,对吗?剩下的部分将不会被直接触及。我认为它只会创建一个新的URL,其鬼文件名不会正确地存在于设备内部文件夹中;但正如你所说,它改变了真正的文件名,我会尝试一下,我会很快反馈。谢谢;)好的,祝你好运……:)没有预料到,可能是因为我解释错了。也许我要做的是更改特定URL路径的文件名,这会更改文件路径本身吗?还是仅仅是指针?我的意思是,文件本身会改变它的名称吗?指针现在会像你说的那样与file.pdf文件在一起吗?问这个问题是因为我可以按照你所说的方式来做,但是当从url访问文件时,它可能找不到它,因为文件名仍处于上一阶段。它会将last test123更改为file.pdf。你需要的,对吗?剩下的部分将不会被直接触及。我认为它只会创建一个新的URL,其鬼文件名不会正确地存在于设备内部文件夹中;但正如你所说,它改变了真正的文件名,我会尝试一下,我会很快反馈。谢谢;)好的,祝你好运……:)没有预料到,可能是因为我解释错了。也许我要做的是更改特定URL路径的文件名