如何在swift中将字符串编码为base64
发布时间:2020-12-14 06:09:12 所属栏目:百科 来源:网络整理
导读:我想将一个字符串转换为base64。我在几个地方发现相同的答案,但它不工作了swift。我使用Xcode 6.2。我相信答案可能工作在以前的Xcode不是Xcode 6.2。 有人可以请指导我这样做在Xcode 6.2? 我发现的答案是这样的。但它不工作在Xcode 6.2 var str = "iOS Dev
我想将一个字符串转换为base64。我在几个地方发现相同的答案,但它不工作了swift。我使用Xcode 6.2。我相信答案可能工作在以前的Xcode不是Xcode 6.2。
有人可以请指导我这样做在Xcode 6.2? 我发现的答案是这样的。但它不工作在Xcode 6.2 var str = "iOS Developer Tips encoded in Base64" println("Original: (str)") // UTF 8 str from original // NSData! type returned (optional) let utf8str = str.dataUsingEncoding(NSUTF8StringEncoding) // Base64 encode UTF 8 string // fromRaw(0) is equivalent to objc 'base64EncodedStringWithOptions:0' // Notice the unwrapping given the NSData! optional // NSString! returned (optional) let base64Encoded = utf8str.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!) println("Encoded: (base64Encoded)") // Base64 Decode (go back the other way) // Notice the unwrapping given the NSString! optional // NSData returned let data = NSData(base64EncodedString: base64Encoded,options: NSDataBase64DecodingOptions.fromRaw(0)!) // Convert back to a string let base64Decoded = NSString(data: data,encoding: NSUTF8StringEncoding) println("Decoded: (base64Decoded)") ref:http://iosdevelopertips.com/swift-code/base64-encode-decode-swift.html
我没有安装6.2,但我不认为6.3在这方面有什么不同:
dataUsingEncoding返回一个可选的,所以你需要解包。 NSDataBase64EncodingOptions.fromRaw已经替换为NSDataBase64EncodingOptions(rawValue :)。稍微令人惊讶的是,这不是一个可用的初始化程序,所以你不需要打开它。 但是因为NSData(base64EncodedString :)是一个failable初始化,你需要解包。 Btw,所有这些更改建议由Xcode migrator(单击错误消息在天沟,它有一个“修复”的建议)。 最终代码,重写以避免强制解包,看起来像这样: import Foundation let str = "iOS Developer Tips encoded in Base64" println("Original: (str)") let utf8str = str.dataUsingEncoding(NSUTF8StringEncoding) if let base64Encoded = utf8str?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) { println("Encoded: (base64Encoded)") if let base64Decoded = NSData(base64EncodedString: base64Encoded,options: NSDataBase64DecodingOptions(rawValue: 0)) .map({ NSString(data: $0,encoding: NSUTF8StringEncoding) }) { // Convert back to a string println("Decoded: (base64Decoded)") } } (如果使用Swift 1.2,你可以使用多个if-let而不是地图) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |