2012-04-03 15 views
1

Ich habe zwei Fragen. (Zuerst) Ich versuche es überall dort zu machen, wo sich das iPhone bewegt, eine Alarmbox erscheint und zeigt den Längengrad an, wo sie waren, und den Breitengrad wo sie jetzt sind. Dies dient Testzwecken für einen Teil eines größeren Projekts, an dem ich gerade arbeite. Problem ist, dass keine Alarmbox auftaucht. Ich dachte, dass, wenn der Standortmanager einen neuen Standort bekommt, er den Stellvertreter auslöst, der den Standort in einer Alarmbox anzeigen sollte, aber überhaupt nichts passiert.Kann mir jemand helfen mit CLLocationManager?

Hier ist, wie ich die Einstellung der Location Manager auf:

- (void)viewDidLoad 
{ 
    locationManager =[[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    [locationManager startUpdatingLocation]; 
} 

Hier ist der Delegat:

-(void) locationmanager: (CLLocationManager *) manager 
     didUpdateToLocation: (CLLocation *) newLocation 
     fromLocation: (CLLocation *) oldLocation 
{ 
    float oldlat; 
    float oldlng; 
    float lat; 
    float lng; 
    NSDate *oldtime; 
    NSDate *newtime; 

    lat = newLocation.coordinate.latitude; 
    lng = newLocation.coordinate.longitude; 
    newtime = newLocation.timestamp; 
    oldlat = oldLocation.coordinate.latitude; 
    oldlng = oldLocation.coordinate.longitude;  
    oldtime = oldLocation.timestamp; 

    NSNumber *oldlong = [NSNumber numberWithFloat:oldlng]; 
    NSNumber *newlat = [NSNumber numberWithFloat:lat]; 
    UIAlertView *alert = [[UIAlertView alloc] 
          initWithTitle:oldlong 
          message:newlat 
          delegate:self 
          cancelButtonTitle:@"Cancel" 
          otherButtonTitles:@"Submit",nil]; 
    [alert show]; 

(zweitens), wenn ich zufrieden bin, dass ich in der Lage bin zu verfolgen das neue und alte latlng, weiß jemand den besten Weg, um die Daten zu speichern? Ich habe sqlite, Kerndaten recherchiert und nur Arrays verwendet, aber ich habe immer noch Zweifel, was die beste Möglichkeit ist, lat, lng, timestamp und username zu speichern, die wahrscheinlich ein paar hundert Mal am Tag für etwa 200 generiert werden Benutzer und senden Sie es dann an einen Server.

Ich weiß, das war eine lange Frage, aber jede Einsicht würde sehr geschätzt werden!

+0

Ich würde Core-Datum für Ihre zweite Frage verwenden. Über dein erstes - was sind die Werte der Variablen? insbesondere, newLocation.coordinate und oldLocation.coordinate? – TommyG

+0

Um ehrlich zu sein, bin ich mir nicht sicher, ob Sie die Warnung im Delegate-Objekt anzeigen können ... haben Sie versucht, die UIAlertView in Ihrem übergeordneten Objekt darzustellen? – TommyG

+1

Auch die Warnung hat einen Titel und eine Nachricht, die eine Zeichenfolge benötigt. Du hast NSNumbers drin. Ich bin überrascht, dass das überhaupt kompilieren würde. –

Antwort

0

Ok. Ich bin wirklich erstaunt, warum Ihre Anwendung nicht auf dieser Linie Absturz hat:

UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle:oldlong 
         message:newlat 
         delegate:self 
         cancelButtonTitle:@"Cancel" 
         otherButtonTitles:@"Submit",nil]; 

Wenn versuchen UIAlertView Parameter zu verstehen, richtig werden Sie initWithTitle und message Parameter zu sehen sind vom Typ NSString und was Sie ist vorbei NSNumber nehmen so zwei NSString für Breitengrad und Längengrad und übergeben Sie sie als Parameter wie folgt.

NSString *long1=[[NSString alloc]initWithFormat:@"%f",oldlong]; 
NSString *lat1=[[NSString alloc]initWithFormat:@"%f",newlat]; 

UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle:long1 
         message:lat1 
         delegate:self 
         cancelButtonTitle:@"Cancel" 
         otherButtonTitles:@"Submit",nil]; 

Aber in didUpdateToLocation Alarm zeigt nicht eine gute Idee sein, da es immer wieder aufgerufen wird, wird, so dass Sie alert Pop jede zweite Verriegelungs Ihre Interaktion haben bis auf. Obwohl dieser Code für mich funktioniert hat. Schau dir Screenshot an.

enter image description here

+0

Wenn Sie sagen: "Obwohl dieser Code für mich funktioniert hat." Redest du über den Code, den ich geschrieben habe, aber mit deinen Änderungen? Ich habe alle Änderungen ausprobiert, die du gesagt hast, aber es taucht immer noch keine Alarmbox auf, wenn ich herumgehe. Hmm .. – michael03m

+0

Das ist der Grund, warum ich Screenshot als Beweis veröffentlicht habe .. :-)) –

+0

Ja, ich habe Änderungen nach Ihrer Kodierung vorgenommen und dann lief .. –

Verwandte Themen