有关于ios从服务器上请求json数据处理的问题

li_jie232098 2014-05-19 06:17:53
#import "FirstViewController.h"

@interface FirstViewController ()
{
NSArray *dianArray; // 获取数据库点的集合
}
@property (weak, nonatomic) IBOutlet UITextField *textQiDian;
@property (weak, nonatomic) IBOutlet UITextField *textZhongDian;
@property (weak, nonatomic) IBOutlet UIButton *location;



@end

@implementation FirstViewController

@synthesize myMapView; //确定名称
- (void)viewDidLoad
{
[super viewDidLoad];
_textQiDian.delegate = self; // 起点和终点 点击输入框return输入框会消失,但需要实现代理
_textZhongDian.delegate = self;
CLLocationCoordinate2D coors[2] = {0};
coors[0].latitude = 30.50737;
coors[0].longitude = 114.343579;
coors[1].latitude = 30.509887;
coors[1].longitude = 114.343779;
BMKPolyline *polyline = [BMKPolyline polylineWithCoordinates:coors count:2];
[myMapView addOverlay:polyline];
[myMapView setCenterCoordinate:coors[0]];
[myMapView setZoomLevel:17];
[myMapView setShowsUserLocation:YES];
[self performSelector:@selector(getAnnotation) withObject:nil];
NSLog(@"%@",dianArray);

}
//折线的具体实现
- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id<BMKOverlay>)overlay
{
if ([overlay isKindOfClass:[BMKPolyline class]]) {
BMKPolylineView *polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay];
polylineView.strokeColor = [[UIColor purpleColor] colorWithAlphaComponent:1];
polylineView.lineWidth = 4.0;
return polylineView;
}
return nil;
}
//定位
//模拟器定位的实现需要到 模拟器->调试->位置->自定位置 才可以显示
- (IBAction)startLocation:(id)sender {
NSLog(@"进入普通定位态");
myMapView.showsUserLocation = NO;
myMapView.userTrackingMode = BMKUserTrackingModeFollow;
myMapView.showsUserLocation = YES;
}

//标注的具体实现
- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation
{
if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {
BMKPinAnnotationView *newAnnotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"myannotation"];
newAnnotationView.pinColor = BMKPinAnnotationColorRed;
//落下来的动画显示
newAnnotationView.animatesDrop = YES;
return newAnnotationView;
}
return nil;
}
//从服务器上取得所有点的经纬度
- (void)getAnnotation{
NSURL *url = [NSURL URLWithString:@"http://localhost/Lujing/annotation.php"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request setDidFailSelector:@selector(urlRequestFailed:)];
[request setDidFinishSelector:@selector(urlRequestSucceeded:)]; //setDidFinishSelector和setDidFailSelector均没有返回值
[request startAsynchronous];
}
//用于点击按钮发送数据
- (IBAction)sendQiDianAndZhongDian:(id)sender {
NSString *Qidian = self.textQiDian.text;
NSString *Zhongdian = self.textZhongDian.text;
NSLog(@"%@ %@",Qidian,Zhongdian);
NSString *strURL = @"http://localhost/Lujing/floyd.php";
NSURL *url = [NSURL URLWithString:[self URLEncodedString:strURL]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:Qidian forKey:@"start"];
[request setPostValue:Zhongdian forKey:@"end"];
[request setDidFailSelector:@selector(urlRequestFailed:)];
[request setDidFinishSelector:@selector(urlRequestSucceeded:)];
[request setDelegate:self]; //配置代理为本类
[request setRequestMethod:@"POST"];
[request startSynchronous];
}
//编码
- (NSString *)URLEncodedString:(NSString *)str
{
NSString *result = ( NSString *)
CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)str,
NULL,
CFSTR("!*();+$,%#[] "),
kCFStringEncodingUTF8));
return result;
}

//请求失败和成功
- (void)urlRequestFailed:(ASIHTTPRequest*)request
{
NSError *error = [request error];
NSLog(@"%@",error);
}
- (void)urlRequestSucceeded:(ASIHTTPRequest*)request
{
NSError *error;
NSData *data = [request responseData];

//NSLog(@"%@",data);
dianArray = [[NSArray alloc] init];
dianArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
NSLog(@"json数据%@",dianArray);
//dianArray = [NSArray arrayWithArray:dianArray];
}
以上是我的基本代码,我从服务器上返回的json数据是
[{"jiancheng":"a","dian":"??","latitude":"30.512366","longitude":"114.338804"},{"jiancheng":"b","dian":"????","latitude":"30.511723","longitude":"114.337661"},{"jiancheng":"c","dian":"????2","latitude":"30.511012","longitude":"114.336411"},{"jiancheng":"d","dian":"?????","latitude":"30.511344","longitude":"114.334876"},{"jiancheng":"e","dian":"?????","latitude":"30.511566","longitude":"114.33391"},{"jiancheng":"f","dian":"????","latitude":"30.508793","longitude":"114.333213"},{"jiancheng":"g","dian":"???","latitude":"30.508585","longitude":"114.336384"},{"jiancheng":"h","dian":"???","latitude":"30.508862","longitude":"114.335209"},{"jiancheng":"i","dian":"???","latitude":"30.509292","longitude":"114.335311"},{"jiancheng":"j","dian":"?????","latitude":"30.511894","longitude":"114.332238"}]
在ios端接到的数据格式为
2014-05-19 18:07:10.108 whut[4385:60b] json数据(
{
dian = "??";
jiancheng = a;
latitude = "30.512366";
longitude = "114.338804";
},
{
dian = "????";
jiancheng = b;
latitude = "30.511723";
longitude = "114.337661";
},
{
dian = "????2";
jiancheng = c;
latitude = "30.511012";
longitude = "114.336411";
},
{
dian = "?????";
jiancheng = d;
latitude = "30.511344";
longitude = "114.334876";
},
{
dian = "?????";
jiancheng = e;
latitude = "30.511566";
longitude = "114.33391";
},
{
dian = "????";
jiancheng = f;
latitude = "30.508793";
longitude = "114.333213";
},
{
dian = "???";
jiancheng = g;
latitude = "30.508585";
longitude = "114.336384";
},
{
dian = "???";
jiancheng = h;
latitude = "30.508862";
longitude = "114.335209";
},
{
dian = "???";
jiancheng = i;
latitude = "30.509292";
longitude = "114.335311";
},
{
dian = "?????";
jiancheng = j;
latitude = "30.511894";
longitude = "114.332238";
}
)
2014-05-19 18:07:10.195 whut[4385:60b] location error
2014-05-19 18:07:10.412 whut[4385:3b0b] keyStatus = 0
也就是({},{},{}),我想问这样的格式用NSArray取正确吗?如果正确那么为什么viewDidLoad中的输出结果是null
...全文
207 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_jie232098 2014-05-19
  • 打赏
  • 举报
回复
抱歉,问题已经解决,其实根本没有什么错误,Xcode上返回的数组数据类型就是({},{},{})这样的,而后我通过for()循环可以成功去除所有的数据,谢谢大家!

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧