0

我有一个返回值列表的 NSString,如下所示:

test_1=value_1  
test/2=value_2  
test3=value_3 value_4  
test_4=value_5/value_6  
...  

更现实的结果值:

inameX=vlan2    
hname=server    
lanipaddr=192.168.1.1    
lannetmask=255.255.255.0    
islan=0    
islwan=0    
dhcplease=604800    
dhcplease_1=302400  
ct_tcp_timeout=0 1200 40 30 60 60 5 30 15 0
ct_timeout=10 10
ct_udp_timeout=25 60
ctf_disable=1    
ddnsx0=
cifs2=0<\\192.168.1.5
and so on...   

如果我做:

 for (id key in dict) {
            NSLog(@"key: %@, value: %@", [dict objectForKey:key], key);
        }

它输出:

key: inameX, value: vlan2
key: hname value: server    
key: lanipaddr value: 192.168.1.1    
key: lannetmask value: 255.255.255.0 

该列表存储在一个 NSString *result 中。不确定我是否应该将它放入一个数组中,但我需要能够调用一个函数或命令,该函数或命令将根据参数返回一个特定的 value_X 以匹配变量。例如,获取 test_1 变量的值,然后它将返回 value_1。或者获取 test_4 然后它会返回 value_5/value_6

知道我该怎么做吗?

我感谢您的帮助。谢谢!

4

3 回答 3

2

您可能希望调用 NSString 中的方法componentsSeparatedByCharactersInSet:来将该字符串拆分为一个数组。由于您的值由 '=' 和换行符 ('\n') 分隔,因此您希望集合包含这两个字符:

NSArray *strings = [NSString componentsSeparatedByCharactersInSet:
                        [NSCharacterSet characterSetWithCharactersInString:@"=\n"]];

然后你可以用 NSDictoinary's 把它变成一个字典dictionaryWithObjects: AndKeys: 但是首先,你需要将该数组分成两个数组;一个带对象,一个带键:

 NSMutableArray *keys = [NSMutableArray new];
    NSMutableArray *values = [NSMutableArray new];
    for (int i = 0; i < strings.count; i++) {
        if (i % 2 == 0) { // if i is even
            [keys addObject:strings[i]];
        }
        else {
            [values addObject:strings[i]];
        }
    }

然后你把它们放到一个NSDictonary

NSDictionary *dict = [NSDictionary dictionaryWithObjects:values forKeys:keys];
NSLog(@"%@", dict[@"test_1"])  // This should print out 'value_1'

希望有帮助!

于 2013-07-31T03:19:07.437 回答
0

使用 NSDicationary。NSDictionaries 是键值存储。换句话说,有一个键列表。每把钥匙都是独一无二的。每个键都有一个关联的值。值可以是任何数据类型,并且键必须符合 NSCopying 协议(通常是 NSString)。如果您尝试访问 NSDictionary 中不存在的键的值,则返回值将为 nil。

//create the dictionary and populate it
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"value_1" forKey:@"key_1"];
[dict setObject:@"value_2" forKey:@"key_2"];
[dict setObject:@"value_3" forKey:@"key_3"];
[dict setObject:@"value_4" forKey:@"key_4"];


NSString *stringInput = [self getStringInput];//however you find out your input

//find your string value based on the key passed in
NSString *strValue = [dict objectForKey:stringInput];
于 2013-07-31T03:07:32.257 回答
0

您可以使用 NSScanner 来完成这项工作。

扫描您想要其值的字符串,然后扫描该字符串直到遇到 \n,然后将其用于您的要求。

NSScanner *scan =[NSScanner scannerWithString:theString];
[scan scanString:keyString inToString:nil];
[scan setScanLocation:[scan scanLocation]+1];

[scan scanString:@"\n" inToString:requiredString];

所以 requiredString 是你想要的字符串。

于 2013-07-31T12:01:20.340 回答