2010-07-26 16 views
1

我剛剛開始使用Objective-C,這又一次讓我到了要求SO尋求幫助的地步。我需要重寫這個方法,以便我可以使用[self URLEncodedString]來調用它;如何在Objective-C中編寫此方法?

這就是目前的方法看起來像 -

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

但我不能把它像[自URLEncodedString]我如何重寫它,以便能夠使用[self URLEncodedString];來調用它。

P.S.通過[strValue URLEncodedString]調用它;不起作用,因此我做這篇文章的原因。

感謝您的幫助!

+2

這看起來像一個很好的方法實現給我。這需要更多的上下文/錯誤消息。 – 2010-07-26 15:56:17

+0

你有在接口文件上聲明的消息的簽名嗎? – 2010-07-26 16:53:32

回答

8

我想你要求的是創建一個NSString類別,它將編碼你的字符串。

您需要創建一組新文件,將其命名爲有意義的東西(NSString + URLEncoding)。

在.h文件中,你需要這樣的事:

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

然後在您.m文件:

@implementation NSString (URLEncoding) 

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

@end 

當你想用這種方法,你會需要確保你導入「NSString + URLEncoding.h」。

然後你可以做這樣的事情:

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

希望有所幫助。

4

爲什麼不直接使用NSString實例方法stringByAddingPercentEscapesUsingEncoding