Saya ingin mengonversi string ke Base64. Saya menemukan jawaban di beberapa tempat, tetapi tidak berfungsi lagi di Swift. Saya menggunakan Xcode 6.2. Saya yakin jawabannya mungkin berfungsi di versi Xcode sebelumnya dan bukan Xcode 6.2.
Bisakah seseorang memandu saya untuk melakukan ini di Xcode 6.2?
Jawaban yang saya temukan adalah ini, tetapi tidak berfungsi di versi Xcode saya:
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)")
ref: http://iosdevelopertips.com/swift-code/base64-encode-decode-swift.html
Jawaban:
Saya tidak menginstal 6.2 tetapi menurut saya 6.3 tidak ada perbedaan dalam hal ini:
dataUsingEncoding
mengembalikan opsional, jadi Anda perlu membukanya.NSDataBase64EncodingOptions.fromRaw
telah diganti denganNSDataBase64EncodingOptions(rawValue:)
. Sedikit mengherankan, ini bukanlah penginisialisasi yang dapat gagal sehingga Anda tidak perlu membukanya.Tetapi karena
NSData(base64EncodedString:)
merupakan penginisialisasi yang gagal, Anda perlu membukanya.Btw, semua perubahan ini disarankan oleh migrator Xcode (klik pesan kesalahan di selokan dan ada saran "perbaiki").
Kode terakhir, ditulis ulang untuk menghindari force-unwraps, terlihat seperti ini:
(jika menggunakan Swift 1.2 Anda bisa menggunakan beberapa if-lets alih-alih peta)
Pembaruan Swift 5:
sumber
[]
bukanNSDataBase64EncodingOptions(rawValue: 0)
?Cepat
sumber
dfYcSGpvBqyzvkAXkdbHDA==
dan keluaran yang diharapkan harus:u�Hjo���@���
tetapi fungsi di atas mengembalikan nihil. Anda dapat memeriksa keluaran string base-64 di atas di situs-situs ini: Site1 , Site2Anda bisa melakukan ekstensi sederhana seperti:
iOS 7 dan yang lebih baru
sumber
Swift 4.0.3
sumber
Data(self.utf8).base64EncodedString()
opsional akan diperlukan untuk toBase64 (). Dari jawaban di bawah ini: stackoverflow.com/a/35360697/129202Swift 4.2.0
sumber
Setelah penelitian menyeluruh saya menemukan solusinya
Pengkodean
Decoding
Selengkapnya tentang http://creativecoefficient.net/swift/encoding-and-decoding-base64/ ini
sumber
Xcode 8.3.2 • Swift 3.1
sumber
Swift 3 atau 4
sumber
Swift 5.1 , Xcode 11 :
sumber
Cepat 3/4 / 5.1
Berikut adalah
String
ekstensi sederhana , memungkinkan untuk mempertahankan pilihan jika terjadi kesalahan saat mendekode.Contoh:
sumber
Setelah semua perjuangan saya lakukan seperti ini.
Setelah saya memanggil fungsi lain untuk mengubah string yang didekodekan ke kamus
// untuk string ke kamus
sumber
UNTUK SWIFT 3.0
sumber
Swift 4.2.0
untuk memecahkan kode, lihat (dari https://gist.github.com/stinger/a8a0381a57b4ac530dd029458273f31a )
sumber
SwiftyBase64 (pengungkapan penuh: Saya yang menulisnya) adalah pengkodean Swift Base64 asli (tanpa pustaka decoding. Dengannya , Anda dapat mengenkode Base64 standar:
atau URL dan Nama File Safe Base64:
sumber
Jawaban @Airspeed Velocity di Swift 2.0:
sumber