将字符串转换为double以进行坐标使用,Xcode

6 string double objective-c coordinates

我有一个XML文件中的经度和纬度列表.我可以将lat和lon打印为字符串,但是当我将字符串转换为double时,我得到0.

这是我的代码:

NSString *latstring = [[NSString alloc] initWithString:theList.lat] ;
NSString *lonstring = [[NSString alloc] initWithString:theList.lon];
NSLog(@"latstring: %@, lonstring: %@", latstring, lonstring);

double latdouble = [latstring doubleValue];
double londouble = [lonstring doubleValue];
NSLog(@"latdouble: %g, londouble: %g", latdouble, londouble);
Run Code Online (Sandbox Code Playgroud)

当我记录'latstring'和'lonstring'时,我得到了正确的坐标,但是当我记录'latdouble'和'londouble'时,我得到0.

我需要lat和lon值为double,因此我可以在mapview中使用它们,因为它不允许我使用字符串作为坐标.

对此可能有一个非常简单的解释,但我对objective-c相当新,似乎无法找到解决方案.

任何帮助深表感谢.

小智 15

解决了这个问题.在计算了像Phillip所说的字符串的长度后,结果显示长度比字符串长1个字符.所以我在中间添加了另一个字符串,它是与'latstring'和'lonstring'相同的字符串,但它从索引1而不是0开始,因此切断了坐标值前面必须有的任何字符.然后转换为完美的双倍.

这是使用的代码:

NSString *latstring = theList.lat;
NSString *lonstring = theList.lon;
NSLog(@"%@, %@ wooo", latstring, lonstring);

NSString *latcutstring = [latstring substringFromIndex:1];
NSLog(@"cut lat: %@", latcutstring);
NSString *loncutstring = [lonstring substringFromIndex:1];
NSLog(@"cut lon: %@", loncutstring);

double latdouble = [latcutstring doubleValue];
NSLog(@"latdouble: %f", latdouble);
double londouble = [loncutstring doubleValue];
NSLog(@"londouble: %f", londouble);
Run Code Online (Sandbox Code Playgroud)

谢谢Phillip Mills和Tobol的帮助.

编辑:2012年11月

正如克雷格和菲利普所说,这是造成问题的白色空间,我找到了一种更安全的方法,可以不削减所需的角色.

NSString *trimlat = [theList.lat stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSString *trimlon = [theList.lon stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    //Convert to double
    double latdouble = [trimlat doubleValue];
    double londouble = [trimlon doubleValue];

    //Create coordinate
    CLLocationCoordinate2D coord = {(latdouble),(londouble)};
Run Code Online (Sandbox Code Playgroud)