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

前端之家收集整理的这篇文章主要介绍了ios – 如何从NSURL中提取和删除方案名称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
什么是从NSURL中提取删除方案名称和//的正确方法

例如:

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

所以

  1. NSString *scheme = @"note://";
  2. NSString *path = @"Hello";

供以后使用:

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

解决方法

你可以这样看(大多数未经测试的代码,但你明白了):
  1. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
  2. {
  3. NSLog(@"url: %@",url);
  4. NSLog(@"scheme: %@",[url scheme]);
  5. NSLog(@"query: %@",[url query]);
  6. NSLog(@"host: %@",[url host]);
  7. NSLog(@"path: %@",[url path]);
  8.  
  9. NSDictionary * dict = [self parseQueryString:[url query]];
  10. NSLog(@"query dict: %@",dict);
  11. }

所以你可以这样做:

  1. NSString * strNoURLScheme =
  2. [strMyURLWithScheme stringByReplacingOccurrencesOfString:[url scheme] withString:@""];
  3.  
  4. NSLog(@"URL without scheme: %@",strNoURLScheme);

parseQueryString

  1. - (NSDictionary *)parseQueryString:(NSString *)query
  2. {
  3. NSMutableDictionary *dict = [[[NSMutableDictionary alloc] initWithCapacity:6] autorelease];
  4. NSArray *pairs = [query componentsSeparatedByString:@"&"];
  5.  
  6. for (NSString *pair in pairs) {
  7. NSArray *elements = [pair componentsSeparatedByString:@"="];
  8. NSString *key = [[elements objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  9. NSString *val = [[elements objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  10. [dict setObject:val forKey:key];
  11. }
  12. return dict;
  13. }

猜你在找的iOS相关文章