2011-08-23 115 views
0

我与下一个代码的一个问题:无法识别选择

NSDictionary * imagen = [[NSDictionary alloc] initWithDictionary:[envio resultValue]]; 
NSString *imagenS = [imagen valueForKey:@"/Result"]; 

ClaseMaestra *b1 = [[ClaseMaestra alloc]init]; 
NSData *imagenDecode = [[NSData alloc] initWithData:[b1 base64DataFromString:imagenS]]; 

NSLog(@"Decode Image:"); 
NSLog(@"%@", imagenDecode); 

//SAVE IMAGE 

NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 

NSString *docDirectory = [sysPaths objectAtIndex:0]; 

NSString *filePath = [NSString stringWithFormat:@"%@david.png",docDirectory]; 

[imagenDecode writeToFile:filePath atomically:YES]; 

块引用

[envio resultValue] - >在基地返回与一个图像的NSDictionary 64编纂。

我想解码器和保存此图像,但在我的控制台我已经表现出这样的信息:

2011-08-23 19:19:39.750 WSStub[38501:a0f] ************************* 
2011-08-23 19:19:39.752 WSStub[38501:a0f] SendImage 
2011-08-23 19:19:39.752 WSStub[38501:a0f] ************************* 
2011-08-23 19:19:39.759 WSStub[38501:a0f] -[ClaseMaestra base64DataFromString:]: unrecognized selector sent to instance 0xd00ad0 
Program received signal: “EXC_BAD_ACCESS”. 

ClaseMaestra接口:

#import <Foundation/Foundation.h> 

@class NSString; 

@interface ClaseMaestra : NSObject 

+ (NSMutableData *)base64DataFromString: (NSString *)string; 

@end 

我不能明白“无法识别的选择”错误...

回答

2

这是一种类方法,您可以将它称为该类的一个实例。您应该将其更改为实例方法。而不是:

+ (NSMutableData *)base64DataFromString: (NSString *)string; 

用途:

- (NSMutableData *)base64DataFromString: (NSString *)string; 

或者,改变呼叫,而不是:

NSData *imagenDecode = [[NSData alloc] initWithData:[b1 base64DataFromString:imagenS]]; 

用途:

NSData *imagenDecode = [[NSData alloc] initWithData:[ClaseMaestra base64DataFromString:imagenS]]; 

选择什么取决于你需要。

2

base64DataFromString:是一种类方法(以+开头)。因此,而不是

ClaseMaestra *b1 = [[ClaseMaestra alloc]init]; 
NSData *imagenDecode = [[NSData alloc] initWithData:[b1 base64DataFromString:imagenS]]; 

NSData *data = [ClaseMaestra base64DataFromString:imagenS]; 
0

你发送消息类一个实例你应该做的。接收者应该是一个班级。

所以做:

NSData *imagenDecode = [[NSData alloc] initWithData:[ClaseMaestra base64DataFromString:imagenS]]; 
0

您还可以,如果你使用一个私人的框架,例如名字出现此错误:MPMovieView。每个人都知道你不应该使用这些,但我没不知道是我在用一个!

奇怪的是,如果你使用Xib,它们会加载系统并给你相同类型的错误(类方法)。

但是,如果你在代码中加载它,它会隐藏系统框架之一。我花了一个体面的时间挠了挠脑袋,确保一切都正确地连接起来......只是需要改变我为我的自定义内容命名的方式。将此发布给任何有此类似的人