如何防止构建警告:“NSData可能无法响应'dataWithBase64EncodedString:'”

时间:2010-02-11 11:58:09

标签: iphone build-process nsdata

以下代码生成此构建警告:

  

NSData可能无法响应   'dataWithBase64EncodedString:'

代码:

NSString * message = @"string string string";

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

如何解决此问题以删除此警告?

3 个答案:

答案 0 :(得分:5)

删除警告是您最不担心的问题 - NSData不响应该方法,如果您运行此代码将崩溃!

有关NSData的默认可用方法,请参阅docs here

但是,您可能正在寻找在类别中具有dataWithBase64EncodedString实现的this page(请参阅该主题的最后一篇文章!)

答案 1 :(得分:4)

NSData没有dataWithBase64EncodedString:方法。如果您使用此方法使用某些自定义NSData类别,则应在其定义的位置导入标头。

编辑:因此,如果您使用此link中的代码,则可以创建自己的.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:标题。

答案 2 :(得分:3)

只是为了澄清以前的答案:

在NSFoundation API中,NSData没有dataWithBase64EncodedString:方法。如果您使用它复制代码,那么该代码通过添加包含该方法的a category来扩展NSData。

您可以使用类别向任何类添加任意方法。如果某人在其示例代码中使用了某个类别,则除非您还获得定义该类别的标头和实现文件,否则无法使用该代码。如果原作者没有提供这些,那么你就不走运了。

Base64编码不是API为字符串提供的编码之一,因此您可能必须自己实现,或者由具有此功能的人员查找代码。