2012-03-08 54 views
1

这里之后我的数据被清理:最佳方式下载的数据转换成字典

| 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或句号表示。该列从第三个|开始。我希望网站数据是一致的,但至少索引号不会在行之间变化。

+0

你每行有多少项:8或10? – sch 2012-03-08 17:51:57

回答

1

可以每串这样的分离:

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

你可以做这个假设你的数据是NSString

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

通过数据然后循环,并把它的字典里。

0
NSArray* components = [string componentsSeparatedByString:@"|"]; 
    blank = [components objectAtIndex:0]; 
    dist = [components objectAtIndex:1]; 
    PID = [components objectAtIndex:2]; 
    horiz = [components objectAtIndex:3]; 
     //... 

分隔每个由|,那么如果你有兴趣使用阵列的部分,你可以将它设置这样的。如果你不使用字典。

0

您可以使用一个字典来表示这样一个'记录' - (键,值)对 - 并将n个这样的记录放入代表'表'的数组中。 componentsSeparatedByString:@ “|”将其分解为单独的字段 - 适合加载记录(字典)并填充数组。