Ios 解码基础64 swift 2.3
我有以下分机:Ios 解码基础64 swift 2.3,ios,swift,base64,optional,Ios,Swift,Base64,Optional,我有以下分机: extension String { func fromBase64() -> String? { guard let data = NSData(base64EncodedString: self, options: NSDataBase64DecodingOptions(rawValue: 0)) else { return nil } return String(data: data,
extension String {
func fromBase64() -> String? {
guard let data = NSData(base64EncodedString: self, options: NSDataBase64DecodingOptions(rawValue: 0)) else {
return nil
}
return String(data: data, encoding: NSUTF8StringEncoding)!
}
func toBase64() -> String? {
guard let data = self.dataUsingEncoding(NSUTF8StringEncoding) else {
return nil
}
return data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
}
}
我有一个base64编码字符串:R79gQDNTt/0+cjU7pduqfA==
func doStuff(sample : String){
let sampleBase64Decoded = sample.fromBase64()
}
调用此函数时,(doStuff(“R79gQDNTt/0+cjU7pduqfA==”),我遇到一个运行时错误,它指的是在展开可选函数时查找nil:
return String(data: data, encoding: NSUTF8StringEncoding)!
Swift无法将base64数据转换为字符串的原因是什么?您确定它是有效的
utf8
string?@user28434字符串本身是加密的,然后是base64编码的。。所以我需要先对它进行解码,然后再对它进行解密?嗯,在将数据转换为字符串之前,应该先对它进行解密。就像你的fromBase64
之间的guard
行和return
行一样。@user28434好的,谢谢,我会改变事情的结构