0

次のコードは、このビルド警告を生成します。

NSData が「dataWithBase64EncodedString:」に応答しない場合があります。

コード:

NSString * message = @"string string string";

NSData *data= [NSData  dataWithBase64EncodedString:(NSString *)message];

この警告を削除するにはどうすればよいですか?

4

3 に答える 3

5

警告を削除することはあなたの心配の最小です -NSDataそのメソッドに応答せず、このコードを実行するとクラッシュします!

で利用可能なデフォルトのメソッドについては、こちらのドキュメントを参照してくださいNSData

ただし、カテゴリに dataWithBase64EncodedString が実装されているこのページを探している可能性があります (スレッドの最後の投稿を参照してください!)。

于 2010-02-11T12:06:59.250 に答える
4

NSData にはメソッドがありませんdataWithBase64EncodedString:。このメソッドでカスタム NSData カテゴリを使用する場合は、ヘッダーが定義されている場所にインポートする必要があります。

編集: したがって、このリンクのコードを使用している場合は、独自の .h および .m ファイルを作成し、そのコードをそれらにコピーできます。

// MBBase64.h 
@interface NSData (MBBase64)
    + (id)dataWithBase64EncodedString:(NSString *)string;     //  Padding '=' characters are optional. Whitespace is ignored.
    - (NSString *)base64Encoding;
@end

//MBBase64.m
static const char encodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

@implementation NSData (MBBase64)
...
@end

MBBase64.h次に、メソッドを使用する場所にヘッダーをインポートします+dataWithBase64EncodedString:

于 2010-02-11T12:07:16.660 に答える
3

以前の回答を明確にするために:

NSFoundation API では、NSData にメソッドがありませんdataWithBase64EncodedString:。コードをコピーする場合、そのコードはメソッドを含むカテゴリを追加することで NSData を拡張しています。

カテゴリを使用して任意のメソッドを任意のクラスに追加できます。誰かがサンプル コードでカテゴリを使用している場合、カテゴリを定義するヘッダー ファイルと実装ファイルも取得しない限り、そのコードを使用することはできません。元の作者がそれらを利用可能にしなかった場合、あなたは運が悪い.

Base64 エンコーディングは、API が提供する文字列のエンコーディングの 1 つではないため、おそらく自分で実装するか、実装している誰かがコードを見つける必要があります。

于 2010-02-11T15:46:23.650 に答える