微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 如何从NSURL中提取和删除方案名称?

什么是从NSURL中提取删除方案名称和//的正确方法

例如:

note://Hello  ->  @"Hello"
 calc://3+4/5  ->  @"3+4/5"

所以

Nsstring *scheme = @"note://";
Nsstring *path   = @"Hello";

供以后使用:

[[NSNotificationCenter defaultCenter] postNotificationName:scheme object:path];

解决方法

你可以这样看(大多数未经测试的代码,但你明白了):
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    NSLog(@"url: %@",url);
    NSLog(@"scheme: %@",[url scheme]);
    NSLog(@"query: %@",[url query]);
    NSLog(@"host: %@",[url host]);
    NSLog(@"path: %@",[url path]);

    NSDictionary * dict = [self parseQueryString:[url query]];
    NSLog(@"query dict: %@",dict);
}

所以你可以这样做:

Nsstring * strNoURLScheme = 
 [strMyURLWithScheme stringByReplacingOccurrencesOfString:[url scheme] withString:@""];

NSLog(@"URL without scheme: %@",strNoURLScheme);

parseQueryString

- (NSDictionary *)parseQueryString:(Nsstring *)query
{
    NSMutableDictionary *dict = [[[NSMutableDictionary alloc] initWithCapacity:6] autorelease];
    NSArray *pairs = [query componentsSeparatedByString:@"&"];

    for (Nsstring *pair in pairs) {
        NSArray *elements = [pair componentsSeparatedByString:@"="];
        Nsstring *key = [[elements objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        Nsstring *val = [[elements objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];        
        [dict setobject:val forKey:key];
    }
    return dict;
}

原文地址:https://www.jb51.cc/iOS/335359.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐