将NSString键值转换为NSDictionary的最佳方法

时间:2014-03-04 18:05:17

标签: objective-c nsstring nsdictionary

我正在使用网络API,例如它返回:

access_token=aZDi8ZlmDL34YyxCQt0jXdsRl9Kcinye8r8ilwqCOe3-OII2B96XblSyK7urG4DvPYc&expires_in=1396212623&is_voice_enrolled=false&device_id=3

因此,我需要将此单个字符串拆分为键/值对。

的access_token:aZDi8ZlmDL34YyxCQt0jXdsRl9Kcinye8r8ilwqCOe3-OII2B96XblSyK7urG4DvPYc

expires_in:1396212623

is_voice_enrolled:假

DEVICE_ID:3

转换此内容的最佳方法是什么?我应该按&拆分,然后再按=符号拆分吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

是的,分开&然后在=上,像这样:

NSString* data = @"access_token=aZDi8ZlmDL34YyxCQt0jXdsRl9Kcinye8r8ilwqCOe3-OII2B96XblSyK7urG4DvPYc&expires_in=1396212623&is_voice_enrolled=false&device_id=3";

NSMutableDictionary* result = [@{} mutableCopy];
[[data componentsSeparatedByString:@"&"] enumerateObjectsUsingBlock:^(NSString* obj, NSUInteger idx, BOOL *stop) {
    NSArray* components = [obj componentsSeparatedByString:@"="];
    result[components[0]] = components[1];
}];

NSLog(@"%@", result);

答案 1 :(得分:2)

是的,按&分隔,然后按=分隔。