2016-10-25 72 views
2
let strsize = 10_000_000 
let tries = 100 
var longstring:String = "a" 

for i in 1...strsize { 
longstring += "a" 
} 

for i in 1..<2 { 
let basestring = NSData(base64EncodedString: longstring, options: .IgnoreUnknownCharacters) 
print(basestring) 
} 

在命令提示符下編寫代碼。什麼是正確的代碼寫爲斯威夫特3我得到use of unresolved identifier NSData。大多數關於將字符串編碼爲base64的教程都不起作用。將Swift 3中的字符串轉換爲base64

這是在Linux或Mac上爲你工作嗎? http://studyswift.blogspot.sg/2016/03/convert-nsdatauint8-to-base64-in-swift.html

+1

在斯威夫特3,NSData'的'大多數用途轉變爲名爲'Data'新的值類型。 Do:'Data(base64Encoded:longstring,options:.ignoreUnknownCharacters)' – ozgur

+1

@ozgur:至少在蘋果平臺上沒有重命名,兩者都存在,'Data'是'NSData'的「Swift覆蓋類型」。但是這在Linux上可能會有所不同。 –

+2

如果你得到'未解析的標識符',你忘了'import Foundation' – vadian

回答

9

使用這個代替:

let longstring = "test123" 
let data = (longstring).data(using: String.Encoding.utf8) 
let base64 = data!.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0)) 

print(base64)// dGVzdDEyMw==\n 
+2

嗯......你在使用Swift3.0嗎? –

+0

爲什麼'options:NSData.Base64EncodingOptions(rawValue:0)'在那裏?如果你想設置空白選項,你可以使用'[]',它可以和所有'OptionSet'類型一起使用。甚至還有'.base64EncodedString()',它不需要指定選項。 – user28434

+0

是的,標題指出,它似乎我需要'''導入Foundation'''? –

相關問題