简体   繁体   English

NSData base64Encode返回nil swift

[英]NSData base64Encode return nil swift

i tryed我试过了

let contents = results["contents"] as! String!
let decodedData = NSData(base64EncodedString: contents, 
options:NSDataBase64DecodingOptions())
let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding)





let contents = results["contents"] as! String!
let decodedData = NSData(base64EncodedString: contents, options:NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding)



let contents = results["contents"] as! String!
let decodedData = NSData(base64EncodedString: contents, options:NSDataBase64DecodingOptions(rawValue: 0)!)
let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding)

always EXC_BAC_INSTRUCTION from decodedString maybe decodedData return nil总是来自 decodedString 的 EXC_BAC_INSTRUCTION 可能 decodedData 返回 nil

why NSData return nil为什么 NSData 返回 nil

Use .Encoding64CharacterLineLength as option, and apply .base64EncodedStringWithOptions to the data:使用.Encoding64CharacterLineLength作为选项,并将.base64EncodedStringWithOptions应用于数据:

if let contents = results["contents"] as? String,
        decodedData = NSData(base64EncodedString: contents, options:NSDataBase64DecodingOptions(rawValue: 0)) {
    let decodedString = decodedData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
}

You're using so many force unwrap operators ( ! );您使用了如此多的强制解包运算符( ! ); don't do this!不要这样做!

What if results has no mapping for the "contents" key?如果results没有"contents"键的映射怎么办?

What if results has a mapping for the "contents" key but it isn't a String ?如果results具有"contents"键的映射但它不是String怎么办?

What if results has a mapping for the "contents" key, and it is a String , but it's not valid Base 64 encoded data?如果results具有"contents"键的映射,并且它是一个String ,但它不是有效的 Base 64 编码数据怎么办? In this case, NSData's initialization will fail, and return nil.在这种情况下,NSData 的初始化将失败,并返回 nil。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM