Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 解码基础64 swift 2.3_Ios_Swift_Base64_Optional - Fatal编程技术网

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好的,谢谢,我会改变事情的结构