Gustaf Rosenblad
Gustaf Rosenblad

Reputation: 1922

NSURL to NSString

I using this function to get a URL from a String, but how can I get it back?

- (NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding forString:(NSString *)string {
    string = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef)string, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding));
    return string;
}

Upvotes: 4

Views: 5315

Answers (4)

lk_vc
lk_vc

Reputation: 1182

[string stringByReplacingPercentEscapesUsingEncoding:NSUTF8Encoding];

BTW. If use NSURL for file url, be sure to use [url path] to get the unescaped path string, not by [url absoluteString].

Upvotes: 15

Gustaf Rosenblad
Gustaf Rosenblad

Reputation: 1922

I found the answer myself:

- (NSString *)decodedURLString {
    NSString *string = (__bridge NSString*)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,
                                                                                          (CFStringRef)self,
                                                                                          CFSTR(""),
                                                                                          CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

    return string;
}

and for encode:

- (NSString *)encodedURLString {
    NSString *string = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                           (CFStringRef)self,
                                                                           NULL,
                                                                           CFSTR(":/=,!$&'()*+;[]@#?"),
                                                                           CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

    return string;
}

Upvotes: -1

Abhishek
Abhishek

Reputation: 2253

Use this code..

NSError* error = nil;
NSString* text = [NSString stringWithContentsOfURL:your_url encoding:NSASCIIStringEncoding error:&error];

may this will help you

Upvotes: 0

user529758
user529758

Reputation:

Use

NSString *urlString = [url absoluteString];

for this purpose.

Upvotes: 7

Related Questions