如何在 Swift 中將字串編碼為 Base64?


在 Swift 中,您可以使用內建的 Data 型別及其方法 base64EncodedString() 將字串編碼為 Base64。在 iOS 應用程式中,您可能需要在網路請求和響應中將字串編碼為 base64。大多數情況下,您需要將字串編碼為 base64,反之亦然。讓我們學習如何使用 Swift 將字串編碼為 Base64。

示例

在此示例中,我們將使用以下步驟將字串編碼為 base64:

  • 步驟 1 − 在此步驟中,我們將使用 data(using: .utf8) 方法將字串轉換為 Data 物件。在此方法中,我們傳遞 utf8 作為編碼引數,因為這是最常見的編碼方法。

  • 步驟 2 − 在此步驟中,我們呼叫 base64EncodedString 方法將資料物件轉換為 Base64 編碼字串。請記住,data(using:) 方法返回一個可選的資料物件。您可以使用可選繫結來解包它。

import Foundation
let stringToEncode = "This is a sample string to encode in Base64 in Swift."
if let data = stringToEncode.data(using: .utf8) {
   let base64String = data.base64EncodedString()
   print(base64String)
}

輸出

VGhpcyBpcyBhIHNhbXBsZSBzdHJpbmcgdG8gZW5jb2RlIGluIEJhc2U2NCBpbiBTd2lmdC4=

示例

將字串編碼為 Base64、將其解碼回原始字串形式以及處理可能發生的錯誤的另一個示例:

  • 步驟 1 − 在第一步中,我們將定義一個名為“originalString”的輸入字串變數,並使用 data.base64EncodedString() 方法將其編碼為 Base64,如前所述。如前所述,我們分兩步對輸入字串進行編碼。

  • 步驟 2 − 解碼輸入字串後。我們將使用 Data(base64Encoded:) 初始化方法將 Base64 字串轉換為 Data 物件。

  • 步驟 3 − 如果初始化方法返回一個非 nil 的 Data 物件,我們將使用 String(data:encoding:) 初始化方法從 Data 物件建立一個字串。

import Foundation
let originalString = "This is a sample string to encode in Base64 in Swift."
// Encode the string to Base64
if let data = originalString.data(using: .utf8) {
       
   let base64String = data.base64EncodedString()
   print("Base64-encoded string: \(base64String)")
       
   // Decode the Base64-encoded string back to the original string
   if let decodedData = Data(base64Encoded: base64String) {
      if let decodedString = String(data: decodedData, encoding: .utf8) {
         print("Decoded string: \(decodedString)")
      } else {
         print("Error decoding data: could not convert decoded data to string.")
      }
   } else {
      print("Error decoding base64-encoded string: could not create decoded data.")
   }
} else {
   print("Error encoding string: could not create data.")
}

輸出

Base64-encoded string: VGhpcyBpcyBhIHNhbXBsZSBzdHJpbmcgdG8gZW5jb2RlIGluIEJhc2U2NCBpbiBTd2lmdC4=
Decoded string: This is a sample string to encode in Base64 in Swift.

但是,如果要解碼的資料無法轉換為字串或 Base64 編碼文字不正確,則解碼可能不會成功。我們使用可選繫結來管理這些情況,並在任何操作出錯時列印錯誤訊息。

為了保證資料正確地轉換為字串形式和從字串形式轉換回來,需要注意的是,在使用 Data 和 String 初始化方法時,我們指定了 .utf8 編碼。

推薦方法

擴充套件在 Swift 中功能更強大。我們將為 String 建立一個擴充套件以及一些用於編碼和解碼字串的方法。這是一個擴充套件:

import Foundation
extension String {
   func base64Encoded() -> String? {
      data(using: .utf8)?.base64EncodedString()
   }
   func base64Decoded() -> String? {
      guard let data = Data(base64Encoded: self) else { return nil }
      return String(data: data, encoding: .utf8)
   }
}

示例

以下是使用上述擴充套件的示例

let originalString = "This is a sample string to encode in Base64 in Swift."
if let encodedString = originalString.base64Encoded() {
   print("Encoded String: \(encodedString)")
    
   if let decodedString = encodedString.base64Decoded() {
      print("Decoded String: \(decodedString)")
   }
}

輸出

Encoded String: VGhpcyBpcyBhIHNhbXBsZSBzdHJpbmcgdG8gZW5jb2RlIGluIEJhc2U2NCBpbiBTd2lmdC4=
Decoded String: This is a sample string to encode in Base64 in Swift.

在上面的示例中,我們為 String 建立了一個擴充套件來編碼和解碼字串。它看起來簡潔且組織良好。您可以在整個應用程式中使用此擴充套件。在重複程式碼的情況下,無需在任何地方都編寫它。

結論

使用 Data 型別及其 base64EncodedString() 方法,可以輕鬆地將字串編碼為 Swift 中的 Base64。將 Base64 編碼的字串解碼回其原始形式需要使用 Data(base64Encoded:) 初始化方法從編碼字串建立 Data 物件,然後使用 String(data:encoding:) 初始化方法從 Data 物件建立字串。

使用可選繫結並查詢 nil 值來管理潛在的編碼或解碼問題非常重要。在將資料轉換為字串形式和從字串形式轉換回來時,使用正確的編碼至關重要;字串通常使用 .utf8 編碼。

更新於: 2023年4月4日

6K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告