2016-09-02 6 views
0

Я искал много, но я не могу найти то, что я делаю неправильно. Я пытаюсь получить 2 числа, которые хранятся в Firebase (использует json-файл), а затем создавать маркеры карт Google, причем одним из этих чисел является широта, а другая - долгота.Что вызывает 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"]); 
     } 
    } 
    ]; 


} 

Извините, если код выглядит беспорядочным.

Это сообщение об ошибке: *** Нагрузочного приложения из-за неперехваченное исключение 'NSInvalidArgumentException', причина: «- [NSTaggedPointerString objectForKeyedSubscript:]

И Google Maps маркеры не создается вообще. Любое понимание этого?

+2

Один объект, который вы считаете «NSDictionary», на самом деле является «NSString». Используйте точку останова, чтобы узнать, какая строка именно вызывает проблему. – Larme

+0

можете ли вы опубликовать фрагмент своей структуры Firebase? В тексте, пожалуйста, никаких изображений. Это может обеспечить понимание ошибки. – Jay

+0

Это более или менее список мест, каждый из которых имеет широту, долготу, имя (имя) и адрес (endereco). Поэтому «места» разделены на «место 1», «место 2» и т. Д. И каждое из этих мест имеет то, что я сказал. Это просто. Я не уверен, достаточно ли это достаточно, но я думаю, что вы получили мою точку. – user32367

ответ

0

Я нашел ответ, просто изменив FEEventTypeChildAdded на FEEventTypeValue. Я не могу объяснить причины, но, по крайней мере, это работает.