Преобразование жала в структуру в target-c - PullRequest
0 голосов
/ 31 мая 2011

У меня есть эта строка a:10,b:xx,e:20,m:xy,w:30,z:50

Но ключи и значение меняются ...

Я хочу преобразовать ее в структуру в target-c (я хочу приложениепреобразовать строку в структуру автоматически, а не вручную)

В PHP результат будет:

 $array = array(
      'a' => 10, // or 'a' => "10" (doesn't matter)
      'b' => "xx",
      'e' => 20, // or 'e' => "20" (doesn't matter)
      'm' => "xy",
      'w' => 30, // or 'w' => "30" (doesn't matter)
      'z' => 50  // or 'z' => "50" (doesn't matter)
 );

Итак, как мне преобразовать эту строку в структуру и получить результаткак в примере с PHP, но сделать это в target-c ...?

Пожалуйста, покажите мне точный код, я новичок в target-c:)

Спасибо

Ответы [ 3 ]

2 голосов
/ 31 мая 2011

Эта структура PHP для меня больше похожа на словарь, поэтому я предполагаю, что это так.

NSString *s = @"a:10,b:xx,e:20,m:xy,w:30,z:50";
NSArray *pairs = [s componentsSeparatedByString:@","];
NSMutableArray *keys = [NSMutableArray array];
NSMutableArray *values = [NSMutableArray array];

for (NSString *pair in pairs)
{
    NSArray *keyValue = [pair componentsSeparatedByString:@":"];
    [keys addObject:[keyValue objectAtIndex:0]];
    [values addObject:[keyValue objectAtIndex:1]];
}

NSDictionary *dict = [NSDictionary dictionaryWithObjects:values forKeys:keys];
NSLog(@"%@", dict);

Это, очевидно, довольно многословно, но требует некоторой хитрой манипуляции со строками.

Вывод выглядит так:

{
    a = 10;
    b = xx;
    e = 20;
    m = xy;
    w = 30;
    z = 50;
}
1 голос
/ 31 мая 2011
NSString* myString = @"a:10,b:xx,e:20,m:xy,w:30,z:50";

Используйте метод ниже NSString .

- (NSArray *)componentsSeparatedByString:(NSString *)separator

NSArray* myArray = [myString componentsSeparatedByString:@","];
NSMutableDictionary *myDictionary = [NSMutableDictionary dictionary];
for (NSString* stringObj in myArray) 
{
     NSArray *myTemp1 = [stringObj componentsSeparatedByString:@":"];
    [myDictionary setObject:[myTemp1 objectAtIndex:0] forKey:[myTemp1 objectAtIndex:1]];
}

Теперь myDictionary Экземпляр эквивалентен массиву $

1 голос
/ 31 мая 2011

Вы можете взорвать строку, снова взорвать фрагменты и поместить все это в словарь. Это должно работать:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSString *str = @"a:10,b:xx,e:20,m:xy,w:30,z:50";
NSArray *arr = [str componentsSeparatedByString:@","];
for (NSString *fragment in arr) {
    NSArray *keyvalue = [fragment componentsSeparatedByString:@":"];
    [dict setObject:[keyvalue objectAtIndex:0] forKey:[keyvalue objectAtIndex:1]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...