2012-03-08 52 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:@ 「|」將其分解爲單獨的字段 - 適合加載記錄(字典)並填充數組。