• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 为什么 URL 在存储然后从本地文件系统检索时会被截断?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:30:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我已经生成了一个具有以下功能的 URL。我想将此保存到本地文件夹以供以后使用。但是,当我将其保存到本地文件夹,然后检索它时,URL 被截断。请有人建议我如何保存和提取完整的 URL?

func createPhotoURL() -> URL {
    
    let fileName = "tempImage_wb.jpg"
    
    let documentsDirectories = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
    let documentDirectory = documentsDirectories.first!
    let pdfPageURL = documentDirectory.appendingPathComponent("\(fileName)")
    
    return pdfPageURL
}

当我调用该函数时,我会得到完整的 URL:

let imageURL = createPhotoURL() // CORRECT URL FOR FILE UPLAOD
print("imageURL: \(imageURL)")

控制台:

file:///var/mobile/Containers/Data/Application/CDDE2FED-5AAB-4960-9ACF-33E7B42D05AE/Documents/tempImage_wb.jpg

将上面的 URL 保存到本地文件夹并检索它:

UserDefaults.standard.set(imageURL, forKey: "URL_IMAGE")
guard let retrievedURL = UserDefaults.standard.string(forKey: "URL_IMAGE") else{return}
print("retrievedURL: \(retrievedURL)")

控制台:

retrievedURL: ~/Documents/tempImage_wb.jpg



Best Answer-推荐答案


要回答您的问题,请使用 UserDefaults.standard.url 而不是 UserDefaults.standard.string

guard let retrievedURL = UserDefaults.standard.url(forKey: "URL_IMAGE") else{return}

但这只有在您保存路径并在同一个 session 中检索它时才有效。如果您使用上述代码并多次运行该应用程序,您将获得未截断的 url(如您所愿)。但是如果你检查得当,你会发现你实际上在不同的 session 中得到了不同的 url。

因此您不应该将其保存为 URL,而应将其保存为字符串。为此,您可以使用 absoluteString URL 的属性

let imageURL = createPhotoURL()
print("imageURL: \(imageURL)")
UserDefaults.standard.set(imageURL.absoluteString, forKey: "URL_IMAGE")

要检索,您将首先从 UserDefaults 中检索保存的字符串,然后将其转换为 URL

if let urlString = UserDefaults.standard.string(forKey: "URL_IMAGE"),
    let retrievedURL = URL(string: urlString) {

    print("retrievedURL: \(retrievedURL)")
}

关于ios - 为什么 URL 在存储然后从本地文件系统检索时会被截断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52131524/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap