【问题标题】:Certain characters make moveItemAtURL:toURL:error: crash. how do I avoid them?某些字符会使 moveItemAtURL:toURL:error: 崩溃。我该如何避免它们?
【发布时间】:2023-03-17 01:06:02
【问题描述】:

首先,我使用的是 Swift。其次,这一行在我的代码中运行良好:

let didIt = fileManager.moveItemAtURL(originalFilePath, toURL: newFilePath, error: nil)

...只要 newFilePath 中没有特殊字符。如果 newFilePath 中有一个美元符号或一个 & 符号 ($, & ),则该行失败。我的问题是 newFilePath 来自用户可以输入任何旧内容的窗口中的文本字段。如何转义特殊字符,或对其进行编码,以便它们通过测试并包含在新文件名中?

提前感谢任何指点。

【问题讨论】:

  • 你能显示originalFilePathnewFilePath的声明吗?听起来这就是您的问题所在。
  • 看看this question上接受的答案。
  • 感谢 Mike 的提示,但是当我使用 NSUTF8StringEncoding 时,我的路径都可以正常工作而不会崩溃,但是文件名在应该有空格的地方都有 %20...
  • newFilePath = newFilePath.URLByAppendingPathComponent(txtResultName.stringValue!.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)

标签: cocoa swift


【解决方案1】:

我的问题是 newFilePath 来自用户可以输入任何旧内容的窗口中的文本字段。

这就是你的问题。为什么不使用NSSavePanel 让用户选择保存文件的名称?

如果您坚持从文本字段中获取输入,-URLByAppendingPathComponent: 的文档特别指出路径组件字符串应该是“以其原始形式(不是 URL 编码)”(强调我的)。

在添加路径组件之前,您最初是如何创建 newFilePath 的?例如,您应该使用名称中带有“[fF]ileURL”的方法之一。

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    相关资源
    最近更新 更多