2011-08-23 113 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,它們會加載系統並給你相同類型的錯誤(類方法)。

但是,如果你在代碼中加載它,它會隱藏系統框架之一。我花了一個體面的時間撓了撓腦袋,確保一切都正確地連接起來......只是需要改變我爲我的自定義內容命名的方式。將此發佈給任何有此類似的人