2010-12-04 18 views
3

Ceci est un morceau de code de terremoto de Craig Schamp .. fonctionne très bien sur le simulateur (os 4.2) mais pas sur l'appareil.iphone NSNumberFormatter travail sur simulateur pas sur l'appareil os 4.2 lors de l'analyse

self.currentEarthquake.magnitude = [formatter numberFromString:magString]; and 

NSNumber *latituide = [formatter numberFromString:[comp objectAtIndex:0]]; 

NSNumber *longitude = [formatter numberFromString:[comp objectAtIndex:1]] 

sur l'appareil sont nulles alors que sur simulateur ont toutes les données .... ici le tout le code .... mon appareil 3G avec 4,2 est NSNumberFormatter le problème ???

if ([elementName isEqualToString:@"title"]) { 
    //<title>M 5.8, Banda Sea</title> 
    NSArray *components = [self.propertyValue componentsSeparatedByString:@","]; 
    if (components.count > 1) { 
    // strip the M 
    NSString *magString = [[[components objectAtIndex:0] componentsSeparatedByString:@" "] objectAtIndex:1]; 

    NSLog(@"String %@",magString); 

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    self.currentEarthquake.magnitude = [formatter numberFromString:magString]; 
    self.currentEarthquake.place = [components objectAtIndex:1]; 
    [formatter release]; 

    NSLog(@"Magnetudine %@",self.currentEarthquake.magnitude); 
    NSLog(@"Place %@",self.currentEarthquake.place); 

    NSLocale *currentUsersLocale = [NSLocale currentLocale]; 
    NSLog(@"Current Locale: %@", [currentUsersLocale localeIdentifier]); 

    } 
} else if ([elementName isEqualToString:@"updated"]) { 
    //<updated>2008-04-29T19:10:01Z</updated> 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"]; 
    self.currentEarthquake.lastUpdate = [formatter dateFromString:self.propertyValue]; 
    [formatter release]; 

    NSLog(@"Date %@",self.currentEarthquake.lastUpdate); 

} else if ([elementName isEqualToString:@"georss:point"]) { 
    NSArray *comp = [self.propertyValue componentsSeparatedByString:@" "]; 
    NSLog(@"Comp %@",comp); 

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 


    NSNumber *latituide = [formatter numberFromString:[comp objectAtIndex:0]]; 
    NSLog(@"Latitude %@",latituide); 
    NSNumber *longitude = [formatter numberFromString:[comp objectAtIndex:1]]; 
    [formatter release]; 
    CLLocation *location = [[CLLocation alloc] initWithLatitude:latituide.floatValue 
       longitude:longitude.floatValue]; 
    self.currentEarthquake.location = location; 
    [location release]; 

    NSLog(@"Location %@",location); 
} else if([elementName isEqualToString:@"entry"]) { 
    [(id)[self delegate] performSelectorOnMainThread:@selector(addEarthquake:) 
      withObject:self.currentEarthquake 
      waitUntilDone:NO]; 
} 

2010-12-05 03: 46: 45,738 Terremoto [251: 307] Comp ( "41,9022" "12,4579" ) 05/12/2010 03: 46: 45,745 Terremoto [251 : 307] Latitude (nulle)

2010-12-05 03: 46: 45.847 Terremoto [251: 307] Emplacement < +0,00000000, +0,00000000> +/- 0,00m (vitesse -1,00 mps/cap -1,00) @ 05/12/10 03:46:45 GMT-03: 00

2010-12-05 03: 46: 45.854 Terremoto [251: 307] Chaîne 5.0

2010-12-05 03: 46: 45,864 Terremoto [251: 307] Magnetudine (null)

2010-12-05 03: 46: 45,868 Terremoto [251: 307] Place Hôtel Ergife

2010-12-05 03: 46: 45.871 Terremoto [251: 307] Emplacement actuel: it_IT

2010-12-05 03: 46: 45.892 Terremoto [251: 307] Date 2010-10-14 14:35: 18 +0000

2010-12-05 03: 46: 45,898 Terremoto [251: 307] Comp ( "-6,1020", "127,5017" )

journal de l'appareil

+0

Pouvez-vous NSLog 'components'? –

Répondre

6

La raison pour laquelle il ne fonctionne pas est plus probable que dans vos paramètres régionaux (italien), la période « » n'est pas le séparateur décimal valide.

Appelez -[NSNumberFormatter setDecimalSeparator:] pour définir la valeur correcte.

+0

Merci beaucoup je me doutais que cos sur le périphérique actuel local était it-IT et simulateur en_US ... il suffit d'ajouter [formatter setDecimalSeparator: @ "."]; et fonctionne bien ... merci encore – Valerio

1

J'ai eu le même problème dans le même contexte (coordonnées d'analyse). Je suis sur iOS 4.3. Mon mac et l'iPad que j'ai utilisé sont tous les deux réglés en allemand, donc le formateur IMO devrait se comporter de la même manière, mais ce n'est pas le cas.

J'ai fini avec l'aide de celle-ci:

pi.latitude = [NSNumber numberWithDouble:[(NSString *)[coords objectAtIndex:0] doubleValue]]; 

qui fonctionne sur le simulateur et sur l'appareil.