将NSString转换为键值对

Mil*_*noo 2 objective-c nsdictionary key-value nsstring keyvaluepair

我有来自服务器的响应,它是NSString,看起来像这样

resp=handshake&clientid=47D3B27C048031D1&success=true&version=1.0
Run Code Online (Sandbox Code Playgroud)

我想将它转换为键值对,如字典或数组.我找不到任何有用的内置函数来解码NSString到NSdictionary并替换&with space并没有解决我的问题,任何人都可以给我任何想法或是否有任何函数来解决这个问题?

Wev*_*vah 8

这应该工作(在我的头顶):

NSMutableDictionary *pairs = [NSMutableDictionary dictionary];

for (NSString *pairString in [str componentsSeparatedByString:@"&"]) {
    NSArray *pair = [pairString componentsSeparatedByString:@"="];

    if ([pair count] != 2)
        continue;

    [pairs setObject:[pair objectAtIndex:1] forKey:[pair objectAtIndex:0]];
}
Run Code Online (Sandbox Code Playgroud)

或者你可以使用一个NSScanner,但是对于像查询字符串一样短的东西,额外的几个数组不会产生性能差异.