1. ホーム
  2. swift

[解決済み] Swiftでbase64StringをStringに変換する方法とは?

2022-02-18 07:55:01

質問

NSDataでWebサービスの応答からbase64Stringを受信していますが、swiftでそのbase64StringをStringに変換する方法は?

    //Code
    var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as! NSDictionary  // Response JSON from webservice
    var base64String : String = ""
    base64String = jsonResult["Base64String"] as! String  // Retrieve base64String as string from json response
    println("Base64String Alone: \(base64String)")

// Code to decode that base64String
let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))
                                    println("Decoded:  \(decodedData)")
                                    let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding)
                                    println(decodedString) // Prints nil

テキストだけのファイルではbase64Stringのエンコード、デコードはうまくいきますが、何らかの表形式や画像を含むファイルではエンコード、デコードともに無効なbase64Stringを与えてしまいます。どのようにすれば、ファイルの内容が何であれ、base64Stringエンコードおよびデコードに変換できるのでしょうか? ファイル形式は、doc, docx, pdf, txtです。

よろしくお願いします。

解決方法は?

これを試してみてください

let base64Encoded = "YW55IGNhcm5hbCBwbGVhc3VyZS4="

let decodedData = Data(base64Encoded: base64Encoded)!
let decodedString = String(data: decodedData, encoding: .utf8)!

print(decodedString)

println(decodedString)

Base64でエンコードされた文字列が有効であることを確認します。