【问题标题】:NSURL to NSData nil valueNSURL 到 NSData 零值
【发布时间】:2017-03-08 13:41:33
【问题描述】:

我正在尝试将NSURL 转换为NSData。我的 url 字符串是我从设备获取的本地文件 url。

    let url = NSURL(string: url)
    let imageData = NSData(contentsOfURL: url)
    let image = UIImage(data: imageData)

我得到了正确的NSURL 值。但是在将其转换为NSData 时,它会给出nil 的值。我知道stackoverflow中有类似的问题,但没有一个能解决我的问题。我正在使用 swift 2.2

【问题讨论】:

  • imageData 为零吗?尝试使用 contentsOfFile: 代替,如果它是本地的,或者使用 fileURLWithPath: 更改 NSURL 构造
  • 如果是加载本地文件,为什么要转换成url、nsdata?关注这个:stackoverflow.com/questions/25739762/…

标签: ios swift nsdata nsurl


【解决方案1】:

如果字符串指向 本地文件 url,那么您使用了错误的 API。正确的是

let url = NSURL(fileURLWithPath: urlString)

NSURL(string: 仅适用于以有效文件方案开头的 URL 字符串(例如 httpftp

【讨论】:

  • 在将其转换为 NSData 时仍然得到 nil 值。这是我的 url 字符串:"/var/mobile/Media/DCIM/101APPLE/IMG_1827.JPG" 这是我将其转换为 NSURL 后得到的结果:file:///var/移动/媒体/DCIM/101APPLE/IMG_1827.JPG
  • 你有那个目录的访问权限吗?
  • 我不这么认为。我如何确保这一点??
【解决方案2】:

试试这个代码。

let urlString = "/var/mobile/Media/DCIM/101APPLE/IMG_1827.JPG"
let url = URL(fileURLWithPath: urlString)
let imageData = NSData(contentsOf: url)
let image = UIImage(data: imageData as! Data)

【讨论】:

  • imageData 为零
  • 可能是因为你的 urlString 你确定它是正确的吗?
  • urlString 是一个字符串,你不会知道它是否是一个正确的字符串,因为字符串类型无法检查数据,你必须仔细考虑每个文件夹并检查每个字母,并记住它区分大小写。
  • 或者您可以通过右键单击文件并选择获取信息来复制链接,然后从常规下拉列表中复制链接位置:
【解决方案3】:

正确的是使用 contentsOf: forecastURL!作为 URL 而不是 contentsOf: forecastURL

  let forecastURL = NSURL(string: "http://photos.state.gov/libraries/media/788/images/90x90.gif")

  let testImage = NSData (contentsOf: forecastURL! as URL)

    print("data",testImage!)

    let image = UIImage(data: testImage! as Data)
    print("imaGE :-",image!)

【讨论】:

  • 您可能还想添加一些解释,说明为什么此代码有帮助以及您所做的更改。
  • @milo526 我正在添加 contentsOf: forecastURL!作为 URL 而不是 contentsOf: url
猜你喜欢
  • 2011-11-07
  • 2011-07-03
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 2014-12-18
  • 2016-11-24
相关资源
最近更新 更多