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 提供的字符串编码之一,因此您可能必须自己实现该编码,或者由拥有该编码的人找到一些代码。

于 2010-02-11T15:46:23.650 回答