【问题标题】:NSDataBase64DecodingOptions is returning nil valueNSDataBase64DecodingOptions 返回 nil 值
【发布时间】:2015-06-08 22:24:12
【问题描述】:

我正在尝试将 base64 类型解析为 imageData。但是我的 NSDataBase64DecodingOptions 返回 nil。我打印了decodedData,它是零。我的代码在这里

var base64String = arrayText["auto_type_android_img"] as String

println("basestring64 is \(base64String)")

let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))

println("base string is: \(decodedData)")
if let decodedImage = UIImage(data: decodedData!) {

    imageTypeOfCar?.image = decodedImage
}

【问题讨论】:

  • 这很可能意味着 Base64 字符串无效。您是否在某些在线 Base64 转换器中对其进行了测试? NSData 对所需的填充也很严格(长度必须是 4 的倍数),比较 stackoverflow.com/questions/29152706/…
  • 你好 Martin,是的,我试过了,我从在线转换器得到了图片...
  • 你验证过Base64字符串的长度是4的倍数吗?
  • 长度为 4 的倍数是什么意思?

标签: json swift base64 decode


【解决方案1】:

你的base64String

data:image/png;base64,iVBORw0KGgoA......YII=

最初的"data:image/png;base64,"不是 Base64 的一部分 编码,必须在字符串被解码之前删除:

if let range = base64String.rangeOfString("data:image/png;base64,", options: .AnchoredSearch)  {
    base64String.removeRange(range)
}

然后

let decodedData = NSData(base64EncodedString: base64String, options: nil)
if let decodedImage = UIImage(data: decodedData!) {
    imageTypeOfCar?.image = decodedImage
}

成功并显示

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多