2012-08-13 62 views
0

我一直計劃的路線作爲iOS的谷歌地圖的自定義。ios LINESTRING解析

如何解析LINESTRING中的傳入JSON?

我LINESTRING:

"coordInfo": "LINESTRING (28.646751729297 40.9993029074749, 28.6470087874434 40.9995465119554, 28.6470087874434 40.9995465119554, 28.6474633603416 41.0000088561426)" 
    }, 

回答

1

它看起來像,從你貼什麼,那objectForKey @ 「coordInfo」 爲您提供了括號中的數字一個字符串。你可以使用NSString方法來解析componentsSeparatedByCharactersInSet:傳遞一個包含左括號,右括號,逗號和空格的集合以產生單個數字字符串的數組(以及單詞「LINESTRING」作爲數組中的第一個字符串) 。該數組還將包含一些空字符串,其中包含2個分隔符字符(如逗號和空格),因此在將對象從數組中取出時必須進行測試。

你也可以使用一個NSScanner這樣的:

NSString *toParse = @"LINESTRING (28.646751729297 40.9993029074749, 28.6470087874434 40.9995465119554, 28.6470087874434 40.9995465119554, 28.6474633603416 41.0000088561426)"; 
    NSScanner *scanner = [NSScanner scannerWithString:toParse]; 
    double num; 
    while (! [scanner isAtEnd]) { 
     [scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil]; 
     [scanner scanDouble:&num]; 
     // put numbers into an array here or use them somehow 
     NSLog(@"%f",num); 
    } 
+0

謝謝:)問題解決 – Jealian 2012-08-14 05:53:07

+0

想你的代碼,但其記錄的最後一個數字的兩倍(可能的「)」結尾),在IF中添加這樣的代碼可以修復它:while(![scanner isAtEnd] && scanner.scanLocation 2015-02-05 09:55:38