[英]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.