如何在 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 編碼。