以下代码生成此构建警告:
NSData可能无法响应 'dataWithBase64EncodedString:'
代码:
NSString * message = @"string string string";
NSData *data= [NSData dataWithBase64EncodedString:(NSString *)message];
如何解决此问题以删除此警告?
答案 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为字符串提供的编码之一,因此您可能必须自己实现,或者由具有此功能的人员查找代码。