- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 AFNetworking
,并且正在学习有关通过从 google 路线获取路线在 iphone 屏幕上绘制路线的教程。我正在使用 JSON
和 AFNetworking
。我从教程中复制了代码,您可以在这里找到:Tutorial
如果您还选择复制和测试此代码,请注意:您需要来自此 github 页面的 AFNetworking
:AFNetworking Download
您还必须自己在 .h 中将变量 _path
定义为 NSMutableArray
,否则您会收到错误,因为他们没有定义它但引用了它。
代码如下:
AFHTTPClient *_httpClient = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://maps.googleapis.com/"]];
[_httpClient registerHTTPOperationClass: [AFJSONRequestOperation class]];
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setObject:[NSString stringWithFormat:@"%f,%f", location.coordinate.latitude, location.coordinate.longitude] forKey:@"origin"];
[parameters setObject:[NSString stringWithFormat:@"%f,%f", location2.coordinate.latitude, location2.coordinate.longitude] forKey:@"destination"];
[parameters setObject:@"true" forKey:@"sensor"];
NSMutableURLRequest *request = [_httpClient requestWithMethod:@"GET" path: @"maps/api/directions/json" parameters:parameters];
request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
AFHTTPRequestOperation *operation = [AFHTTPClient HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id response) {
NSInteger statusCode = operation.response.statusCode;
if (statusCode == 200) {
[self parseResponse:response];
} else {
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { }];
[_httpClient enqueueHTTPRequestOperation:operation];
所以这是我的问题
感谢那些提供帮助的人。我已经测试了没有错误的代码,但现在在尝试制作路线时发现了这一点。它在这里崩溃:
- (void)parseResponse:(NSDictionary *)response {
NSArray *routes = [response objectForKey:@"routes"]; // CRASH HERE
NSDictionary *routePath = [routes lastObject];
if (routePath) {
NSString *overviewPolyline = [[routePath objectForKey: @"overview_polyline"] objectForKey:@"points"];
_path = [self decodePolyLine:overviewPolyline];
NSInteger numberOfSteps = _path.count;
CLLocationCoordinate2D coordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++) {
CLLocation *location = [_path objectAtIndex:index];
CLLocationCoordinate2D coordinate = location.coordinate;
coordinates[index] = coordinate;
}
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[self.mapView addOverlay:polyLine];
}
}
附错误说明:
-[__NSCFData objectForKey:]: unrecognized selector sent to instance 0x2004bb80
你们能帮忙吗?谢谢!
最佳答案
Let me also say that the AFHTTPClient previously did not have this HTTPOperationWithRequest class method as shown, but I had to copy and paste it in from AFHTTPRequestOperation.
我从您的 github 链接中克隆了 AFNetworking
,并在 AFHTTPClient.h
文件中找到了它:
- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;
我想知道为什么您收到错误而不是“找不到方法”警告。 HTTPRequestOperationWithRequest
是实例方法,不是类方法:
AFHTTPRequestOperation *operation = [_httpClient HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
// do something
;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
;
}];
顺便说一句,你链接的教程是正确的。
关于iphone - map View 崩溃时的 GDirections 路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11825876/
我需要使用 google map directions 来显示两个地址之间的方向。 如何使用地址显示谷歌地图? 此外,我有源地址和目标地址(没有纬度和经度),如何使用 jquery 显示地址之间的方向
我的 map 主要是渲染的,但我在 firebug 中不断收到错误,指出 GDirections 未定义。这是 firebug 中的完整错误: GDirections is not defined i
这看起来应该有效吗?我想生成从一个纬度/经度到另一个纬度/经度的方向。 var dirMap = new GMap2($("#dirMap").get(0)); var wp = new Array(
我正在使用 AFNetworking,并且正在学习有关通过从 google 路线获取路线在 iphone 屏幕上绘制路线的教程。我正在使用 JSON 和 AFNetworking。我从教程中复制了代码
我正在尝试向 Google Maps API 返回到指定 div (directionsPanel) 的路线结果中添加一些文本。下面的代码可以正常工作,除了 jQuery 行在 loadFromWay
我在使用 Google Maps API 时遇到了难题 - 我正在使用 GDirections 对象来获取在两点之间旅行所需的时间。 我已经在 Firebug 中测试了以下代码,因此我的其余代码影响这
我是一名优秀的程序员,十分优秀!