Comment puis-je encoder une chaîne Base64 dans Swift?
Je veux convertir une chaîne Base64. J'ai trouvé des réponses dans plusieurs endroits, mais il ne fonctionne plus en Swift. J'utilise Xcode 6.2. Je crois que la réponse pourrait être travailler dans les précédentes versions de Xcode et pas Xcode 6.2.
Quelqu'un pourrait-il svp me guider pour ce faire, dans Xcode 6.2?
La réponse que j'ai trouvé était présent, mais il ne fonctionne pas dans ma version de Xcode:
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
- Swift extension est propre et à portée de main. stackoverflow.com/a/46969102/1996294
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas de 6.2 installé mais je ne pense pas que 6.3 est toute différente à cet égard:
dataUsingEncoding
renvoie une option, si vous avez besoin de déballer ce.NSDataBase64EncodingOptions.fromRaw
a été remplacé parNSDataBase64EncodingOptions(rawValue:)
. Légèrement surprise, ce n'est pas un failable initialiseur de sorte que vous n'avez pas besoin de déballer.Mais depuis
NSData(base64EncodedString:)
est un failable initialiseur, vous avez besoin de déballer ce.Btw, tous ces changements ont été suggérés par Xcode migrator (cliquez sur le message d'erreur dans le caniveau et il a un “fix-it” suggestion).
Code Final, réécrite pour éviter de force déballe, ressemble à ceci:
(si utilisation de Swift 1.2 vous pouvez utiliser plusieurs si-permet au lieu de la carte)
[]
au lieu deNSDataBase64EncodingOptions(rawValue: 0)
?Swift
dfYcSGpvBqyzvkAXkdbHDA==
et la production prévue a dû être:u�Hjo���@���
mais la fonction ci-dessus renvoie nil. Vous pouvez consulter ci-dessus en base 64 de la chaîne de sortie sur ces sites: Site1, Site2Vous pourriez faire une simple extension comme:
iOS 7 et
Swift 4.0.3
Data(self.utf8).base64EncodedString()
aucune option serait nécessaire pour toBase64(). De ci-dessous réponse: stackoverflow.com/a/35360697/129202Après une recherche approfondie, j'ai trouvé la solution
Encodage
Décodage
Plus sur ce http://creativecoefficient.net/swift/encoding-and-decoding-base64/
Swift 4.2
Xcode 8.3.2 • Swift 3.1
Swift 3 ou 4
Swift 3
Ici est une simple
String
extension de mise à jour pour Swift 3, permettant pour la préservation des options dans le cas d'une erreur lors du décodage.Exemple:
Après tout combat j'ai fait comme cela.
Après je suis l'appel d'une autre fonction pour convertir décodé chaîne de dictionnaire
//pour chaîne de dictionnaire
POUR SWIFT 3.0
SwiftyBase64 (divulgation complète: je l'ai écrit) est un natif de Swift, de l'encodage Base64 (pas de décodage de la bibliothèque. Avec elle, vous pouvez encoder la norme en Base64:
ou l'URL et le nom de fichier Safe Base64:
@Vitesse Vitesse de réponse rapide 2.0:
Swift 4.2
à décoder, voir (de https://gist.github.com/stinger/a8a0381a57b4ac530dd029458273f31a)