2016-09-02 2 views
0

Ich habe viel gesucht, aber ich kann nicht finden, was ich falsch mache. Ich versuche, 2 Zahlen zu erhalten, die in Firebase gespeichert sind (verwendet eine JSON-Datei) und dann Google Maps-Marker zu erstellen, wobei eine dieser Zahlen der Breitengrad und die andere der Längengrad ist.Was verursacht die NSInvalidArgumentException?

__block int i =0; 
while (i < 5) { 
    i++; 
    NSString *url = [NSString stringWithFormat:@"---myfirebaseurl---", i]; 

    Firebase *ref = [[Firebase alloc] initWithUrl:url]; 
    [ref observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) { 

     if (snapshot.value == [NSNull null]){ 

      i = 5; 
     } 
     if (snapshot.value != [NSNull null]){ 
      NSString *latitudestring = snapshot.value[@"latitude"]; 
      NSString *longitudestring = snapshot.value[@"longitude"]; 
     long latitude = [latitudestring longLongValue]; 
     long longitude = [longitudestring longLongValue]; 

     NSLog(@"latitude: %li and longitude: %li", latitude, longitude); 

     CLLocationCoordinate2D position = CLLocationCoordinate2DMake(latitude, longitude); 
     GMSMarker *marker = [GMSMarker markerWithPosition:position]; 
     marker.map = mapview; 
     marker.title = (@"%@", snapshot.value[@"nome"]); 
     marker.snippet = (@"%@", snapshot.value[@"endereco"]); 
     } 
    } 
    ]; 


} 

Sorry, wenn der Code ist es irgendwie chaotisch.

Diese Fehlermeldung erscheint: *** App beenden aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException', Grund: ‚- [NSTaggedPointerString objectForKeyedSubscript:]

Und die Google Maps Marker sind gar nicht erstellt. Irgendein Einblick darauf?

+2

Ein Objekt, von dem Sie glauben, dass es ein 'NSDictionary' ist, ist tatsächlich ein' NSString'. Verwenden Sie den Haltepunkt, um zu wissen, welche Zeile das Problem genau verursacht. – Larme

+0

können Sie ein Snippet Ihrer Firebase-Struktur posten? Als Text bitte, keine Bilder. Dies kann einen Einblick in den Fehler geben. – Jay

+0

Es ist mehr oder weniger eine Liste von Orten, jeweils mit Breiten-, Längengrad, Name (Nome) und Adresse (endereco). So ist "Orte" in "Platz 1", "Platz 2" usw. unterteilt. Und jeder dieser Orte hat das, was ich gesagt habe. Es ist nur so dass. Ich bin mir nicht sicher, ob es klar genug ist, aber ich denke du hast meinen Punkt – user32367

Antwort

0

Ich fand die Antwort nur durch FEEventTypeChildAdded zu FEEventTypeValue. Ich kann die Argumentation nicht wirklich erklären, aber zumindest funktioniert es.

Verwandte Themen