Quel est le code le plus simple et le plus rapide pour effectuer une conversion entre NSData
et une chaîne base64? J'ai lu un tas de solutions sur SO et elles impliquent principalement l'ajout d'une autre classe, etc. J'ai trouvé une excellente solution ici mais c'est trop complexe.
Faites défiler la section Conclusion sur la page que vous avez liée et téléchargez les fichiers NSData + Base64 fournis . C'est la meilleure solution que j'ai vue jusqu'à présent et elle est incroyablement facile à utiliser. Si vous pouvez apprendre quelque chose sur Cocoa, vous pouvez apprendre à utiliser ce projet.
Exemple
NSString *originalString = [NSString stringWithFormat:@"test"];
NSData *data = [NSData dataFromBase64String:originalString];
NSLog([data base64EncodedString]);
Ce qui précède imprimera la chaîne d'origine après l'avoir convertie en base64 et en une chaîne normale non codée.
Depuis iOS 7, NSData
fournit maintenant directement cette fonctionnalité avec les nouvelles méthodes -base64EncodedDataWithOptions:
et -base64EncodedStringWithOptions:
. (Les options vous permettent de spécifier que la chaîne est/doit être renvoyée à la ligne, afin de mieux gérer le courrier électronique et les affichages destinés aux utilisateurs.)
Vous n'avez besoin d'aucune implémentation personnalisée. La création de base64 à partir de NSData est présentée dans d'autres réponses. Il y a une direction opposée. De la chaîne Base64 à NSData:
NSString *base64Encoded = @"some base64 string";
NSData *nsdataFromBase64String = [[NSData alloc] initWithBase64EncodedString:base64Encoded options:0];
J'ai fini par utiliser cette même classe fournie par SUDZC
la mise en œuvre était facile d'abord j'ai fait une importation
#import "NSData+Base64.h"
alors j'ai pu appeler mes données.
NSData *data = [[NSData alloc] initWithData:[NSData dataWithBase64EncodedString:strData]];
Ou vous pouvez jeter un oeil au (tout nouveau) CryptoCompatibility exemple de projet, je pense qu’il existe une classe wrapper pour les opérations en base64. C'est un exemple MacOS mais il utilise la bibliothèque libresolve.dylib avec, je pense, également disponible sur iOS (voyez-le au moins ici dans iOS7).
Sachez qu'il existe plus de formats Base64.
Par exemple, les fichiers JWT utilisent un format sûr URL .