2015-11-21 4 views
1

Я пытаюсь построить некоторые объекты, используя данные, полученные из json.Невозможно получить значения из NSDictionary и JSON

К сожалению, у меня все еще возникают проблемы с доступом к элементам со всеми попытками решить проблему, несмотря на многочисленные попытки.

Код:

[NSURLConnection sendAsynchronousRequest:[[NSURLRequest alloc] initWithURL:restURL] queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 

    if (error) { 
     NSLog(@"Log error thing: %@", error); 
    } else { 
     NSLog(@"THE DATA IS REAL: %@", data); 

     NSMutableArray* jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 

     NSLog(@"%@", jsonArray); 

     for (NSDictionary *item in jsonArray){ 
      NSString *val = item[@"title"]; 
      NSLog(@"AN ITEM: %@ %@", item, val); 
     } 

    } 
}]; 

Линия для «Данных реально печатается, то JSON в настоящее время содержит только один элемент, но будет иметь больше и структурирована следующим образом:

2015-11-21 11:37:06.313 UnfoldApp[20444:562253] { 
timelines =  (
      { 
     "__v" = 1; 
     "_id" = 564fff17b6db3ccd0529e410; 
     creationDate = "2015-11-21T05:18:42.293Z"; 
     location = Norwich; 
     picture = "http://photos4.meetupstatic.com/photos/event/a/9/b/c/600_384643452.jpeg"; 
     posts =    (
          { 
       "__v" = 0; 
       "_id" = 564fff49b6db3ccd0529e411; 
       content = "Tonight saw 134 people witness 26 pitches from this years Sync the City attendees. All had a minute each to deliver their business idea. Voting then began. The audience selected their favourite business ideas. Leaving 14 new business leaders ready to form their teams. Over the next hour all participants gravitated towards the business idea that most ..."; 
       creationDate = "2015-11-21T05:18:42.299Z"; 
       eventDate = "2015-11-17T22:33:45.000Z"; 
       heading = "Sync The City Pitches 2015 - Norfolk Tech Journal"; 
       imageFilename = "http://www.norfolktechjournal.com/wp-content/uploads/2015/11/Sync-the-City-the-Pitches.jpg"; 
       keywords = "City,Student Rental Service,Guerilla Network Pitch,Chris Spalton Photos,Help Majorie Pitch #,NHS,House,Prototype City Pitch,Tim Stephenson"; 
       location = doh; 
       relatedPosts =      (
       ); 
       slug = "sync-the-city-pitches-2015-norfolk-tech-journal"; 
      } 
     ); 
     slug = "sync-the-city"; 
     title = "Sync the City"; 
    } 
); 

}

[NSURLConnection sendAsynchronousRequest: [[NSURLRequest alloc] initWithURL: restURL] queue: [[NSOperationQueue alloc] init] completeHandler:^(NSURLResponse * response, NSData * data, NS Ошибка * ошибка) {

if (error) { 
     NSLog(@"Log error thing: %@", error); 
    } else { 
     NSLog(@"THE DATA IS REAL: %@", data); 

     NSArray* jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 
     NSLog(@"%@", jsonArray); 



     NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonArray options:kNilOptions error:nil]; 
     // NSLog(@"Dictionary: %@", [json objectForKey:@"title"]); 



} 

ошибка, что я получаю происходит, когда я пытаюсь получить доступ к элементам, в данном случае, это где я итерацию по элементам в jSonarray.

Стек след:

2015-11-21 11:37:06.314 UnfoldApp[20444:562253] -[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x79d5c110 
2015-11-21 11:37:06.317 UnfoldApp[20444:562253] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x79d5c110' 
*** First throw call stack: 
(
    0 CoreFoundation      0x02199a84 __exceptionPreprocess + 180 
    1 libobjc.A.dylib      0x01c5ae02 objc_exception_throw + 50 
    2 CoreFoundation      0x021a2dd3 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 
    3 CoreFoundation      0x020e0cdd ___forwarding___ + 1037 
    4 CoreFoundation      0x020e08ae _CF_forwarding_prep_0 + 14 
    5 UnfoldApp       0x0009bc39 __33-[AppDelegate someShittyFunction]_block_invoke + 649 
    6 CFNetwork       0x025ccb62 __67+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]_block_invoke_2 + 177 
    7 Foundation       0x01907a6b __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 12 
    8 Foundation       0x0182b8ff -[NSBlockOperation main] + 108 
    9 Foundation       0x0180bd84 -[__NSOperationInternal _start:] + 697 
    10 Foundation       0x0180bac4 -[NSOperation start] + 83 
    11 Foundation       0x0180b902 __NSOQSchedule_f + 245 
    12 libdispatch.dylib     0x02b9a9cd _dispatch_client_callout + 14 
    13 libdispatch.dylib     0x02b7e650 _dispatch_queue_drain + 2227 
    14 libdispatch.dylib     0x02b7db04 _dispatch_queue_invoke + 570 
    15 libdispatch.dylib     0x02b807bb _dispatch_root_queue_drain + 550 
    16 libdispatch.dylib     0x02b8058e _dispatch_worker_thread3 + 115 
    17 libsystem_pthread.dylib    0x02eba270 _pthread_wqthread + 1050 
    18 libsystem_pthread.dylib    0x02eb7f82 start_wqthread + 34 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

Спасибо за любую помощь, очень высоко.

+0

По структуре она выглядит Словаре Array, но вы пытаетесь получить доступ, как массив словаря – silentBeep

+0

словаря имеет ключевое временную шкалу, которая в свою очередь имеет массив списка – silentBeep

+0

@ShafKhan У вас есть предложения, как я могу решить? Я очень новичок в obj-c – null

ответ

2

Вы можете попробовать это на разборе:

if (error) { 
     NSLog(@"Log error thing: %@", error); 
} else { 
     NSLog(@"THE DATA IS REAL: %@", data); 
// this will be your actaul dictionary 
     NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]]; 

// Array of Timelines 
     NSArray* timelineArray = jsonObject[@"timelines"]; 
     NSLog(@"%@", timelineArray); 

// Get Title from Timeline Dictionary 
     if (timelineArray.count > 0){ 
      NSDictionary *timelineDictionary = timelineArray.firstObject; 
      NSLog(@"Title: %@", timelineDictionary[@"title"]); 
     } 
} 
+0

Ты прекрасна, большое спасибо! :) – null

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