如何在Objective-C中编写此方法?

Rap*_*eta 1 iphone objective-c ios4

我最近刚刚开始使用Objective-C,这让我再次请求SO寻求帮助.我需要重写这个方法,以便我可以使用[self URLEncodedString]调用它;

这就是目前的方法 -

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

但我不能称之为[self URLEncodedString]; 如何重写它以便能够使用[self URLEncodedString]调用它?

PS通过[strValue URLEncodedString]调用它; 不起作用,因此我正在发表这篇文章.

谢谢你的帮助!

Tom*_*ing 8

我想你要求的是创建一个NSString将编码你的字符串的类别.

您需要创建一组新文件,将它们命名为有意义的文件(NSString + URLEncoding).

在.h文件中,您需要这样的内容:

@interface NSString (URLEncoding)
- (NSString*)URLEncodedString;
@end
Run Code Online (Sandbox Code Playgroud)

然后在你的.m文件中:

@implementation NSString (URLEncoding)

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

@end
Run Code Online (Sandbox Code Playgroud)

如果要使用此方法,则需要确保导入"NSString + URLEncoding.h".

然后你可以做这样的事情:

NSString * firstString = @"Some string to be encoded %&^(&(!@£$%^&*";
NSString * encodedString = [firstString URLEncodedString];
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.