【问题标题】:How to fetch parameter from URL [duplicate]如何从 URL 中获取参数 [重复]
【发布时间】:2014-01-12 10:40:41
【问题描述】:

在我的应用程序中。当用户在 Safari 浏览器中单击注册时,我将返回应用程序。在应用程序中我得到 url:myApp://?email=pjayesh999@gmail.com

我想从此网址获取电子邮件的价值。该怎么做?

我已经这样做了,但这给了我没有找到键值电子邮件的错误:

NSString *str=[url valueForKey:@"email"];

【问题讨论】:

标签: ios iphone nsurl


【解决方案1】:
URLParser *parser = [[[URLParser alloc] initWithURLString:@"myApp://?email=pjayesh999@gmail.com"] autorelease];
NSString *emailVal = [parser valueForVariable:@"email"];

使用下面给出的 NSScanner 类
URLParser.h

@interface URLParser : NSObject {
NSArray *variables;
}

@property (nonatomic, retain) NSArray *variables;

- (id)initWithURLString:(NSString *)url;
- (NSString *)valueForVariable:(NSString *)varName;

@end

URLParser.m

@implementation URLParser
@synthesize variables;

- (id) initWithURLString:(NSString *)url{
self = [super init];
if (self != nil) {
    NSString *string = url;
    NSScanner *scanner = [NSScanner scannerWithString:string];
    [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"&?"]];
    NSString *tempString;
    NSMutableArray *vars = [NSMutableArray new];
    [scanner scanUpToString:@"?" intoString:nil];       //ignore the beginning of the string and skip to the vars
    while ([scanner scanUpToString:@"&" intoString:&tempString]) {
        [vars addObject:[tempString copy]];
    }
    self.variables = vars;
    [vars release];
}
return self;
}

- (NSString *)valueForVariable:(NSString *)varName {
for (NSString *var in self.variables) {
    if ([var length] > [varName length]+1 && [[var substringWithRange:NSMakeRange(0, [varName length]+1)] isEqualToString:[varName stringByAppendingString:@"="]]) {
        NSString *varValue = [var substringFromIndex:[varName length]+1];
        return varValue;
    }
}
return nil;
}

- (void) dealloc{
self.variables = nil;
[super dealloc];
}

@end

检查这个答案

NSURL pull out a single value for a key in a parameter string

这是你真正需要的。

一切顺利

【讨论】:

    【解决方案2】:

    尝试使用 URL.query

    NSString *str=url.query;
    

    其中 Url 是 NSUrl 的对象。

    【讨论】:

      【解决方案3】:

      您也可以使用以下代码。

      NSString *strComplete = @"myApp://?email=pjayesh999@gmail.com";
      
      NSArray *array = [strComplete componentsSeparatedByString:@"?"];
      
      NSLog(@"%@",array);
      NSString *strSecond = [array objectAtIndex:1];
      NSLog(@"%@",strSecond);
      

      如果对你有帮助,试试这个。

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 2013-04-09
        • 2012-09-17
        • 2012-09-02
        • 1970-01-01
        • 1970-01-01
        • 2021-08-16
        • 1970-01-01
        • 2020-01-31
        相关资源
        最近更新 更多