2015-01-09 4 views
0

Я пытаюсь создать сына, используя AFHTTPRequestOperation. что json составляется по координатам, и я хочу использовать это для реализации mapkit внутри моего вида здесь коса.Как использовать данные из массива json?

NSURL *URL = [NSURL URLWithString:@"http://www.json-generator.com/api/json/get/cvBRYullDS?indent=2"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 
    AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    op.responseSerializer = [AFJSONResponseSerializer serializer]; 
    [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id JSON) { 
     self.mapLocations = JSON; 
    NSLog(@"%@",self.mapLocations); 
} 

здесь в NSLog:

json =  (
       { 
      lat = "45.1041"; 
      lng = "10.8362"; 
      name = Swifty; 
     }, 
       { 
      lat = "45.1008"; 
      lng = "10.8643"; 
      name = Gianluca; 
     }, 
       { 
      lat = "45.1046"; 
      lng = "10.8681"; 
      name = Carpi; 
     } 
    ); 
} 

здесь я хочу вставить «для», чтобы получить контакты внутри MapKit:

NSURL *URL = [NSURL URLWithString:@"http://www.json-generator.com/api/json/get/cvBRYullDS?indent=2"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 
    AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    op.responseSerializer = [AFJSONResponseSerializer serializer]; 
    [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id JSON) { 
     self.mapLocations = JSON; 
     MKPointAnnotation *annotation; 

     for(NSDictionary *location in self.mapLocations) { 
      CLLocationCoordinate2D annotationCoordinate = 
      CLLocationCoordinate2DMake([location[@"lat"] doubleValue], 
             [location[@"lng"] doubleValue]); 
      MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
      annotation.coordinate = annotationCoordinate; 
      annotation.title = location[@"name"]; 
      annotation.subtitle = nil; 
      [self.mapView addAnnotation:annotation]; 
     } 

     NSLog(@"aaaaaaaaaaaaaaaaa%@",self.mapLocations); 
    } 

Теперь мое приложение разбился.

Любые советы, чтобы установить эту ситуацию ??

Это ошибка в области отладки:

015-01-09 13:48:46.941 pettoiletmaps[6393:539721] <+44.90000000,+10.80000000> +/- 5.00m (speed -1.00 mps/course -1.00) @ 1/9/15, 1:48:44 PM Central European Standard Time 
2015-01-09 13:48:47.211 pettoiletmaps[6393:539721] -[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7ffd8ae416d0 
2015-01-09 13:48:47.213 pettoiletmaps[6393:539721] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7ffd8ae416d0' 
*** First throw call stack: 
(
    0 CoreFoundation      0x000000010af2df35 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x000000010abc6bb7 objc_exception_throw + 45 
    2 CoreFoundation      0x000000010af3504d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 
    3 CoreFoundation      0x000000010ae8d27c ___forwarding___ + 988 
    4 CoreFoundation      0x000000010ae8ce18 _CF_forwarding_prep_0 + 120 
    5 pettoiletmaps      0x000000010898b67e __29-[ViewController viewDidLoad]_block_invoke + 526 
    6 pettoiletmaps      0x000000010899df18 __64-[AFHTTPRequestOperation setCompletionBlockWithSuccess:failure:]_block_invoke46 + 40 
    7 libdispatch.dylib     0x000000010c56bba6 _dispatch_call_block_and_release + 12 
    8 libdispatch.dylib     0x000000010c5897f4 _dispatch_client_callout + 8 
    9 libdispatch.dylib     0x000000010c5728fb _dispatch_main_queue_callback_4CF + 949 
    10 CoreFoundation      0x000000010ae95fe9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9 
    11 CoreFoundation      0x000000010ae58eeb __CFRunLoopRun + 2043 
    12 CoreFoundation      0x000000010ae58486 CFRunLoopRunSpecific + 470 
    13 GraphicsServices     0x000000010d4fd9f0 GSEventRunModal + 161 
    14 UIKit        0x0000000108e71420 UIApplicationMain + 1282 
    15 pettoiletmaps      0x000000010899f603 main + 115 
    16 libdyld.dylib      0x000000010c5be145 start + 1 
    17 ???         0x0000000000000001 0x0 + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 
+1

Пожалуйста, напишите название на английском языке. – JJJ

+1

Можете ли вы опубликовать сообщение об ошибке/исключении? – Miknash

+0

ошибка является сигналом SIGABRT, вам также нужна ошибка в области отладки? –

ответ

0

После запуска вашей ссылке я нашел проблему. JSON вы получили:

JSON: { 
    json =  (
       { 
      lat = "45.1041"; 
      lng = "10.8362"; 
      name = cilly; 
     }, 
       { 
      lat = "45.1008"; 
      lng = "10.8643"; 
      name = Gian; 
     }, 
       { 
      lat = "45.1046"; 
      lng = "10.8681"; 
      name = Fabio; 
     } 
    ); 
} 

Таким образом, вместо self.mapLocations = JSON;

Вам нужно self.mapLocations = [JSON objectForKey:@"json"];

или self.mapLocations = JSON[@"json"];

Тогда вы получите следующее:

<__NSCFArray 0x7ff752c33da0>(
{ 
    lat = "45.1041"; 
    lng = "10.8362"; 
    name = cilly; 
}, 
{ 
    lat = "45.1008"; 
    lng = "10.8643"; 
    name = Gian; 
}, 
{ 
    lat = "45.1046"; 
    lng = "10.8681"; 
    name = Fabio; 
} 
) 
+0

Хорошо, теперь мое приложение работает. Спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^