Как написать этот метод в Objective-C? - PullRequest
1 голос
/ 26 июля 2010

Я только недавно запустил Objective-C, и это снова привело меня к тому, что я обратился к SO за помощью.Мне нужно переписать этот метод, чтобы я мог вызывать его с помощью [self URLEncodedString];

Вот как выглядит метод в настоящее время -

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

Но я не могу назвать его как[self URLEncodedString];Как я могу переписать его, чтобы он работал, чтобы я мог вызывать его с помощью [self URLEncodedString] ;?

PS Вызов его через [strValue URLEncodedString];не работает, поэтому причина, по которой я пишу этот пост.

Спасибо за любую помощь!

Ответы [ 2 ]

8 голосов
/ 26 июля 2010

Я думаю, что вы просите создать категорию 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 %&^(&(!@£$%^&*";
NSString * encodedString = [firstString URLEncodedString];

Надеюсь, это поможет.

4 голосов
/ 27 июля 2010

Почему бы просто не использовать метод экземпляра NSString stringByAddingPercentEscapesUsingEncoding?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...