【问题标题】:Breaking change to get filename without extension in Swift2在 Swift2 中获取不带扩展名的文件名的重大更改
【发布时间】:2026-01-24 04:30:02
【问题描述】:

在 Swift1 中,我们可以通过以下代码获取不带扩展名的文件短名称:

self.name = pathFilename.lastPathComponent.stringByDeletingPathExtension

当我更新到 Swift 2 时,这个 API 不再可用。有了警告信息,我必须使用 NSURL。所以新代码将是:

var filename = NSURL(fileURLWithPath: str).lastPathComponent
filename = NSURL(fileURLWithPath: filename!).URLByDeletingPathExtension?.relativePath

API 突破性更改太复杂。有没有更好的方法可以让它变得更简单?

【问题讨论】:

    标签: ios filenames swift2


    【解决方案1】:

    为什么不:

    self.name = NSURL(fileURLWithPath: str).URLByDeletingPathExtension?.lastPathComponent
    

    我的 Swift 不流利,所以可能缺少一些 !? 那里需要。

    【讨论】:

      【解决方案2】:

      斯威夫特 4

      let url = URL(string: "https://example.com/myFile.html")
      if let fileName = url?.deletingPathExtension().lastPathComponent {
          // fileName: myFile
          self.name = fileName
      }
      

      【讨论】:

        【解决方案3】:

        Swift 5.5 上的这项工作:

        let nameOnly = (fileName as NSString).deletingPathExtension
        let fileExt  = (fileName as NSString).pathExtension
        

        【讨论】: