Skip to main content
 首页 » 编程设计

mysql之使用此代码从 MySQL 数据库调用坐标会导致模拟器显示 SIGABRT 错误。怎么了

2025年12月25日37www_RR

当我使用此代码尝试从 MySQL 数据库调用 Lat & Long 坐标(并将它们显示在 MapView 上)时,应用程序运行良好。一切似乎都正常,但由于某种原因,xcode 在 map 加载之前暂停了模拟器,并向我抛出了一个 SIGABRT。知道为什么吗?见下文:

MapViewController.h

#import <UIKit/UIKit.h> 
#import <MapKit/MapKit.h> 
 
 
    @interface MapViewController : UIViewController  <MKMapViewDelegate>  
 
        @property (nonatomic, strong) IBOutlet MKMapView *mapView; 
        @property (nonatomic, retain) NSMutableArray *dispensaries; 
        @property (nonatomic, retain) NSMutableData *data; 
 
 
    @end 

MapViewController.m
#import "MapViewController.h" 
#import "MapViewAnnotation.h" 
 
 
    @implementation MapViewController 
    @synthesize mapView; 
    @synthesize dispensaries; 
    @synthesize data; 
 
 
 
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    { 
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
        if (self) { 
            // Custom initialization 
        } 
        return self; 
    } 
 
    - (void)didReceiveMemoryWarning 
    { 
        // Releases the view if it doesn't have a superview. 
        [super didReceiveMemoryWarning]; 
 
        // Release any cached data, images, etc that aren't in use. 
    } 
 
    #pragma mark - View lifecycle 
 
    - (void)viewDidLoad { 
 
    [super viewDidUnload]; 
 
 
 
            NSLog(@"Getting Device Locations"); 
 
            NSString *hostStr = @"http://stylerepublicmagazine.com/dispensaries.php"; 
            NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:hostStr]]; 
            NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding]; 
            NSLog(@"server output: %@", serverOutput); 
            NSMutableArray *array = (NSMutableArray *)dispensaries; 
            dispensaries = [NSJSONSerialization JSONObjectWithData:data options:nil error:nil]; 
 
            for (NSDictionary *dictionary in array) { 
 
 
 
                CLLocationCoordinate2D coord = {[[dictionary objectForKey:@"lat"] doubleValue], [[dictionary objectForKey:@"lng"] doubleValue]}; 
 
                MapViewAnnotation *ann = [[MapViewAnnotation alloc] init]; 
                ann.title = [dictionary objectForKey:@"Name"]; 
                ann.coordinate = coord; 
                [mapView addAnnotation:ann]; 
 
 
 
        [mapView setMapType:MKMapTypeStandard]; 
        [mapView setZoomEnabled:YES]; 
        [mapView setScrollEnabled:YES]; 
 
 
 
        self.mapView.delegate = self; 
 
 
    } 
 
    } 
 
    - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
 
    { 
        MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800); 
        [self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES]; 
 
 
    MKPointAnnotation *point = [[MKPointAnnotation alloc] init]; 
    point.coordinate = userLocation.coordinate; 
    point.title = @"You Are Here"; 
    point.subtitle = @"Your current location"; 
 
    [self.mapView addAnnotation:point]; 
 
 
 
    } 

请您参考如下方法:

好的,现在你有了 JSON。您将不得不使用 NSXMLParser 对其进行解码。 .或者,如果你想把它变成对象,你可以使用我在 GitHub 上的开源库,它允许你简单地实现 NSCoding 协议(protocol)并将对象实例化(或将它们编码)为 JSON。那是here .