我想把一个字符串转换成Base64。我在几个地方找到了答案,但它在Swift中不再起作用。我使用的是Xcode 6.2。我相信答案可能是在以前的Xcode版本中工作,而不是Xcode 6.2。
有没有人可以指导我在Xcode6.2中做这件事?
我找到的答案是这样的,但它在我的Xcode版本中不起作用:
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)")
参考:http://iosdevelopertips.com/swift-code/base64-encode-decode-swift.html
发布于 2015-09-11 05:43:55
你可以只做一个简单的扩展,比如:
import UIKit
// MARK: - Mixed string utils and helpers
extension String {
/**
Encode a String to Base64
:returns:
*/
func toBase64()->String{
let data = self.dataUsingEncoding(NSUTF8StringEncoding)
return data!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
}
}
iOS 7及更高版本
发布于 2015-09-29 18:09:15
经过彻底的研究,我找到了解决方案。
编码
let plainData = (plainString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
let base64String =plainData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!)
println(base64String) // bXkgcGxhbmkgdGV4dA==
解码
let decodedData = NSData(base64EncodedString: base64String, options:NSDataBase64DecodingOptions.fromRaw(0)!)
let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding)
println(decodedString) // my plain data
有关此http://creativecoefficient.net/swift/encoding-and-decoding-base64/的更多信息
发布于 2016-09-29 03:28:12
Swift 3或4
let base64Encoded = Data("original string".utf8).base64EncodedString()
https://stackoverflow.com/questions/29365145
复制相似问题