ios - 将 NSString 转换为 String 时,我的结果发生了变化

标签 ios swift

我请求你给我一个解决方案,其中NSStringString的结果都是相同的

downloadedFile = MOM'&^*%s-HC.pdf (In NSString)

let path = pathComponent.appendingPathComponent(downloadedFile as String)
print(path) //OutPut:  ttt_gmail_com/MOM'&%5E*%25s-HC-2.pdf

如果我用正则表达式测试结果就可以。

let NSStringValue = "MOM'&^*%s-HC.pdf" as NSString
print(NSStringValue) // Output: MOM'&^*%s-HC.pdf
let StringValue = downloadedFile as String
print(StringValue) // Output: MOM'&^*%s-HC.pdf

但是当我将该代码放入 appendingPathComponent 中时,它会更改我的结果。

最佳答案

您的文件名在这里包含所有特殊字符,我在示例项目中尝试了您的案例,试图在 UIDocumentInteractionController 中加载此类文件,并且似乎当我有一个带有特殊字符的文件名时在我的文档目录中,我尝试检索它,少数特殊字符是 URL 编码的。

观察我在这里使用的文件名是“MOM'&^*%s-HC.pdf”并将其保存在 doc 目录中,但是当我使用以下代码从文档目录中检索它时,少数字符被 URL 编码为我正在以 URL 的形式获取路径。

所以这意味着你的原始文件名

MOM'&^*%s-HC.pdf

现在已更改并替换为百分比转义序列字符串,

MOM'&%5E*%25s-HC.pdf

观察下面我使用的代码

var pdfURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last! as URL
        pdfURL = pdfURL.appendingPathComponent(fileName)

Output

为了解决这个问题,我所做的就是在创建 URL 时删除了百分比转义序列,并且它有效,我能够在 UIDocumentInteractionController

中查看 PDF
fileName.removingPercentEncoding!

希望有帮助。

关于ios - 将 NSString 转换为 String 时,我的结果发生了变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57271105/

相关文章:

ios - 有没有办法从 Instruments (Xcode) 的命令行实例中删除授权提示?

ios - 如果远程有新版本可用,则更新本地 bundle 文件

json - 使用 Codeable 从 JSON 中提取数据很困难

swift - 如何知道从 JSON 之类的东西实例化哪种类型?

xcode - 制作倒计时器时发出 SIGABRT 错误信号?

ios - 使用扩展/UIgraphicscontext 将表情符号(字符串)呈现为 iOS 中可能的最高分辨率图像

ios - 如果输入的值超过指定的整数,则清除 UITextField

iOS - 需要这样的日期选择器

swift - Swift 中的重载方法会导致 Objective C 错误

ios - iOS 上不同尺寸的不同图像