2011-08-23 2 views
0

I ont un problème avec le code suivant:sélecteur non reconnu

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]; 

Blockquote

[envio ResultValue] -> retourner un NSDictionary avec une image dans la base 64 codification.

Je veux décodeur et enregistrer cette image, mais dans ma console, je l'ai montré ce message:

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”. 

interface ClaseMaestra est:

#import <Foundation/Foundation.h> 

@class NSString; 

@interface ClaseMaestra : NSObject 

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

@end 

Je ne peux pas comprendre le "sélecteur non reconnu" erreur ...

Répondre

2

Ceci est une méthode de classe et vous appelez iton une instance de la classe. Vous devriez soit le changer en une méthode d'instance. au lieu de:

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

Utilisation:

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

Ou, changer l'appel, au lieu de:

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

Utilisation:

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

Que choisir dépend de votre Besoins.

2

base64DataFromString: est une méthode de classe (commence par +). Ainsi, au lieu de

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

Vous devriez faire

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

Vous envoyez un message de classe à une instance. Le récepteur devrait être une classe.

Alors faire:

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

Vous aurez également cette erreur si vous utilisez le nom d'un cadre privé, par exemple: MPMovieView .Everyone sait que vous n'êtes pas censé utiliser ceux-ci, mais ce que je didn Je ne sais pas que j'en utilisais un! Ce qui est étrange, c'est que si vous utilisez Xibs, ils chargent le système et vous donnent le même type d'erreur (méthodes de classe). Mais si vous le chargez dans du code, il ombrera celui de la structure du système. J'ai passé une heure décente à me gratter la tête, m'assurant que tout était bien branché ... c'était juste nécessaire pour changer comment j'ai nommé mes trucs personnalisés. Publier ceci pour n'importe qui avec

Questions connexes