网址为:http://oauth.vk.com/blank.html#access_token=244832666b8168a3mna06f03f5324789a8022455245532b032375f193ceab923&expires_in=86400&user_id=191742
如何在Cocoa中解析它并获取access_token
和user_id
?
答案 0 :(得分:2)
-fragment
的{{1}}方法会在NSURL
之后返回字符串。
这是什么用途。这是非常基本的,不支持实体(如#
),它只是按&
然后按&
分割字符串。
=
因此,您的网址@interface NSURL (SYBasicKeyValueParsing)
- (NSDictionary *)sy_keysAndValuesOfString:(NSString *)string;
- (NSDictionary *)sy_keysAndValuesOfFragment;
- (NSDictionary *)sy_keysAndValuesOfQuery;
@end
@implementation NSURL (SYBasicKeyValueParsing)
- (NSDictionary *)sy_keysAndValuesOfString:(NSString *)string
{
if (!string) return nil;
NSMutableDictionary *result = [NSMutableDictionary dictionary];
for (NSString *pair in [string componentsSeparatedByString:@"&"]) {
NSArray *keyAndValue = [pair componentsSeparatedByString:@"="];
if ([keyAndValue count] == 2) {
[result setObject:[keyAndValue objectAtIndex:1] forKey:[keyAndValue objectAtIndex:0]];
}
}
return [[result copy] autorelease];
}
- (NSDictionary *)sy_keysAndValuesOfFragment
{
return [self sy_keysAndValuesOfString:[self fragment]];
}
- (NSDictionary *)sy_keysAndValuesOfQuery
{
return [self sy_keysAndValuesOfString:[self query]];
}
@end
会产生以下结果:
sy_keysAndValuesOfFragment
答案 1 :(得分:1)
有一个用于解析URL的类:NSURL。如果这还不够,可以使用NSString类的componentsSeparatedByString方法获取参数。