NSData
とbase64文字列間の変換を行う最も簡単で最速のコードは何ですか?私はSOで多くのソリューションを読んでおり、ほとんどの場合、別のクラスの追加などに関与しています。素晴らしいソリューション here しかし、それはあまりにも複雑です。
リンクしたページの / および 提供されたNSData + Base64ファイル のConclusionセクションまで下にスクロールします。私がこれまで見た中で最高のソリューションであり、非常に使いやすいです。 Cocoaについて何か学ぶことができれば、そのプロジェクトの使い方を学ぶことができます。
例
NSString *originalString = [NSString stringWithFormat:@"test"];
NSData *data = [NSData dataFromBase64String:originalString];
NSLog([data base64EncodedString]);
上記では、元の文字列をbase64に変換して通常のエンコードされていない文字列に戻した後、元の文字列を出力します。
IOS 7から、NSData
は、このメソッドに新しいメソッドを直接提供します -base64EncodedDataWithOptions:
および -base64EncodedStringWithOptions:
。 (オプションを使用すると、文字列を行で折り返す/折りたたむように指定できます。電子メールやユーザー向けのディスプレイの処理に適しています。)
カスタム実装は必要ありません。 NSDataからbase64を作成する方法は、他の回答に示されています。反対方向があります。 Base64文字列からNSDataへ:
NSString *base64Encoded = @"some base64 string";
NSData *nsdataFromBase64String = [[NSData alloc] initWithBase64EncodedString:base64Encoded options:0];
私はSUDZCによって提供されたのと同じクラスを使用することになりました
実装は簡単でした最初にインポートを行いました
#import "NSData+Base64.h"
その後、データを呼び出すことができました。
NSData *data = [[NSData alloc] initWithData:[NSData dataWithBase64EncodedString:strData]];
または、(かなり新しい) CryptoCompatibility サンプルプロジェクトをご覧ください。base64操作用のラッパークラスがあると思います。これはMacOSのサンプルですが、ライブラリlibresolve.dylibを使用していますが、iOSでも使用できると思います(少なくともiOS7で確認できます)。
さらに多くのBase64形式があることに注意してください。
たとえば、JWTは RLセーフ形式 を使用します。