2010-07-26 3 views
1

Je viens de commencer Objective-C récemment, et cela m'a encore une fois amené à demander de l'aide à SO. J'ai besoin de réécrire cette méthode pour pouvoir l'appeler en utilisant [self URLEncodedString];Comment écrire cette méthode en Objective-C?

C'est ce que la méthode ressemble actuellement -

- (NSString *)URLEncodedString { 
     NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)self, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8); 
     [result autorelease]; 
     return result; 
} 

Mais je ne peux pas l'appeler comme [auto URLEncodedString]; Comment puis-je le réécrire pour que cela fonctionne pour moi de pouvoir l'appeler en utilisant [self URLEncodedString] ;?

P.S. L'appeler via [strValue URLEncodedString]; ne fonctionne pas, d'où la raison pour laquelle je fais ce post.

Merci pour toute aide!

+2

Cela ressemble à une implémentation de méthode fine pour moi. Cela nécessite plus de contexte/message d'erreur. –

+0

Avez-vous la signature du message déclaré sur le fichier d'interface? –

Répondre

8

Je pense que ce que vous demandez est de créer une catégorie NSString qui va encoder votre chaîne.

Vous devez créer un nouvel ensemble de fichiers, nommez-les de manière logique (NSString + URLEncoding).

Dans le fichier .h, vous aurez besoin de quelque chose comme ceci:

@interface NSString (URLEncoding) 
- (NSString*)URLEncodedString; 
@end 

ensuite dans votre fichier .m:

@implementation NSString (URLEncoding) 

- (NSString *)URLEncodedString { 
     NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)self, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8); 
     [result autorelease]; 
     return result; 
} 

@end 

Lorsque vous souhaitez utiliser cette méthode, vous aurez Vous devez vous assurer d'importer "NSString + URLEncoding.h".

Vous pouvez faire quelque chose comme ceci:

NSString * firstString = @"Some string to be encoded %&^(&([email protected]£$%^&*"; 
NSString * encodedString = [firstString URLEncodedString]; 

espoir qui aide.

4

Pourquoi ne pas simplement utiliser la méthode d'instance NSString stringByAddingPercentEscapesUsingEncoding?