2010-05-28 5 views
0

Ceci est un étrange, vous tous.Définition des résultats de corelocalisation aux paramètres de l'objet NSNumber

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 

    CLLocationCoordinate2D coordinate = newLocation.coordinate; 
    self.mark.longitude = [NSNumber numberWithDouble:coordinate.longitude]; 
    self.mark.latitude = [NSNumber numberWithDouble:coordinate.latitude]; 
    NSLog(@"Got %f %f, set %f %f", coordinate.latitude, coordinate.longitude, self.mark.latitude, self.mark.longitude); 

    [manager stopUpdatingLocation]; 
    manager.delegate = nil; 

    if (self.waitingForLocation) { 
     [self completeUpload]; 
    } 
} 

Le latitude et longitude dans cet objet "marque" sont synthétisés paramètres concernant NSNumber Ivars.

Dans le simulateur, ma sortie NSLog pour cette ligne au milieu, il lit:

2010-05-28 15:08:46.938 EverWondr[8375:207] Got 37.331689 -122.030731, set 0.000000 -44213283338325225829852024986561881455984640.000000 

C'est beaucoup plus à l'est que 1 Infinite Loop! Les chiffres sont différents sur l'appareil, mais similaire - lat est toujours zéro et long est un nombre très élevé très peu probable. Ailleurs dans le contrôleur, j'accepte un bouton et j'appuie sur un fichier (une image que je viens de prendre avec l'appareil photo) avec ses informations de géocodage associées, et j'ai besoin de ce self.waitingForLocation pour informer le délégué CLLocationManager que j'ai déjà touché bouton et une fois fait son affaire, il devrait aller de l'avant et déclencher le téléchargement. La chose est, dans la méthode bouton-clic réception, je teste voir si CL est terminé en testant self.mark.latitude, qui semble se mettre à zéro ...

Répondre

2

Vous imprimez les pointeurs vers les objets NSNumber comme float s - Cela risque d'être très différent.

Utilisation:

NSLog(@"Got %f %f, set %@ %@", coordinate.latitude, coordinate.longitude, 
     self.mark.latitude, self.mark.longitude); 

... ou:

NSLog(@"Got %f %f, set %f %f", coordinate.latitude, coordinate.longitude, 
     [self.mark.latitude doubleValue], [self.mark.longitude doubleValue]); 
+0

Il est clair vendredi après-midi. Merci. –

Questions connexes