Лучший способ поместить загруженные данные в словарь - PullRequest
1 голос
/ 08 марта 2012

Вот мои данные после очистки:

| 3.9|JG0058|. 1|88/ADJUSTED|N384721......|W0982403......|C...|A 295
| 3.3|JG0713|2 .|29/VERT ANG|N384357.45928|W0982552.48655|....|ASTRO STAKE TEMPORARY
| 1.4|JG0054|. 1|88/ADJUSTED|N384459......|W0982059......|C...|B 295
| 4.4|JG0059|. 1|88/ADJUSTED|N384749......|W0982403......|B...|BB 190
| 1.5|JG0055|. 1|88/ADJUSTED|N384530......|W0982142......|B...|BLACK WOLF
| 2.0|JG0700|3 3|29/LEVELING|N384358.55373|W0982006.77896|....|BLACK WOLF
| 2.6|JG0052|. 1|88/ADJUSTED|N384438......|W0981921......|D...|C 295
| 2.3|JG0053|. 1|88/ADJUSTED|N384446......|W0981949......|B...|CC 190
| 4.6|JG0050|. 1|88/ADJUSTED|N384427......|W0981706......|C...|D 295
| 3.6|JG0051|. 1|88/ADJUSTED|N384430......|W0981817......|B...|DD 190
| 3.3|JG0712|1 .|29/VERT ANG|N384356.81442|W0982552.34585|....|JANDA
| 4.6|JG0711|2 .|29/SCALED..|N384053.85600|W0982456.07875|....|PROGRESS
| 4.9|JG0009|. 2|88/ADJUSTED|N384240......|W0981712......|C...|S 197
| 2.0|JG0056|. 1|88/ADJUSTED|N384555......|W0982251......|C...|Y 294
| 2.9|JG0057|. 1|88/ADJUSTED|N384636......|W0982335......|C...|Z 294

Я хотел бы поместить отдельные строки в словарь со следующими ключами и типами:

[@"blank",@"Dist", @"PID", @"Horiz", @"Vert", @"Vert_Source", @"Latitude", @"Longitude", @"Stability", @"Designation", nil];

[[NSString string],float, int, int,int, [NSString string], double, double, [NSString string], [NSString string], nil];

Я не могу показатьсячтобы найти лучший способ сделать это, я бьюсь головой об стену со всеми вариантами.Пожалуйста, помоги, если можешь.Возможно фрагмент кода для чтения строки в словарь или массив.Между прочим, данные в настоящее время находятся в виде изменяемого массива в виде единой строки.Мое намерение состоит в том, чтобы затем использовать эти данные для заполнения ячеек и, в конечном итоге, для картирования местоположений.

Любая помощь будет принята с благодарностью.Поиск данных, как правило, занимает от 1 до 2 секунд, и никогда не будет больше, скажем, 30 строк.

В каждой строке 8 элементов, включая нужный мне пробел, начинающийся с каждой строки.Каждый второй ключ отделяется знаком |за исключением горизонта / вершины, которые отделены ничем, но обозначены буквами через d или точку.Этот столбец начинается с третьего |Хотелось бы, чтобы данные сайта были согласованы, но по крайней мере номера строк не меняются по строкам.

Ответы [ 4 ]

1 голос
/ 08 марта 2012

Вы можете разделить каждую строку следующим образом:

NSArray *values = [string componentsSeparatedByString:@"|"];

Затем вы можете создать словарь для этой строки следующим образом:

NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:values forKeys:keys];

Где ключи - это массив, определенный следующим образом:

NSArray *keys = [NSArray arrayWithObjects:@"blank",@"Dist", @"PID", @"Horiz", @"Vert", @"Vert_Source", @"Latitude", @"Longitude", @"Stability", @"Designation", nil];

Итак, ваш код будет выглядеть так:

NSArray *keys = [NSArray arrayWithObjects:@"blank",@"Dist", @"PID", @"Horiz", @"Vert", @"Vert_Source", @"Latitude", @"Longitude", @"Stability", @"Designation", nil];
for (NSString *line in lines) {
    NSArray *values = [line componentsSeparatedByString:@"|"];
    NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:values forKeys:keys];
    // ...
}
0 голосов
/ 09 марта 2012

Вы можете использовать один словарь для представления таких пар «запись» - (ключ, значение) - и поместить n таких записей в массив, представляющий вашу «таблицу». componentsSeparatedByString: @ "|" разбивает это на отдельные поля - подходит для загрузки записи (словаря) и заполнения массива.

0 голосов
/ 08 марта 2012
NSArray* components = [string componentsSeparatedByString:@"|"];
    blank = [components objectAtIndex:0];
    dist = [components objectAtIndex:1];
    PID = [components objectAtIndex:2];
    horiz = [components objectAtIndex:3];
        //...

Разделите каждую из них знаком |, тогда, если вам интересно использовать части массивов, вы можете настроить их следующим образом. Если вы предпочитаете не использовать словари.

0 голосов
/ 08 марта 2012

Вы могли бы сделать это, предполагая, что ваши данные NSString:

NSArray *array = [data componentsSeparatedByString:@"|"];

Затем переберите данные и поместите их в словарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...