【发布时间】:2016-09-02 16:08:55
【问题描述】:
我搜索了很多,但我找不到我做错了什么。我正在尝试获取存储在 Firebase 中的 2 个数字(使用 json 文件),然后创建谷歌地图标记,其中一个数字是纬度,另一个是经度。
__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"]);
}
}
];
}
如果代码有点乱,请见谅。
出现此错误信息:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSTaggedPointerString objectForKeyedSubscript:]
根本没有创建谷歌地图标记。对此有何见解?
【问题讨论】:
-
您认为是
NSDictionary的对象实际上是NSString。使用断点来了解究竟是哪一行导致了问题。 -
您可以发布您的 Firebase 结构的 sn-p 吗?请为文字,没有图像。这可能有助于深入了解错误。
-
它或多或少是一个地点列表,每个地点都有纬度、经度、名称(nome)和地址(endereco)。所以'places'分为'place 1','place 2'等。每个地方都有我所说的。就是这样。我不确定它是否足够清楚,但我想你明白我的意思
-
错误是明确的。这是一个众所周知的。如果您不向我们提供
snapshot.value的真实结构或帮助我们指出确切导致问题的行(例如使用断点或NSLog()),我们将无法帮助您。
标签: objective-c json google-maps firebase nsexception