2013-02-12 4 views
0

Я пробовал это несколько раз, и я до сих пор не понимаю, как войти в канал JSON и получить то, что мне нужно, чтобы захватить.Json Iphone Parse Data

Feed выглядит так, в моем коде я пытаюсь вытащить все заголовки. Я не знаю, как спуститься в Json Feed.

enter image description here

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 


     [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 

     NSURL *url = [NSURL URLWithString:@"http://api.storageroomapp.com/accounts/511a4f810f66026b640007b8/collections/511a51580f66023bff000ce9/entries.json?auth_token=Zty6nKsFyqpy7Yp5DP1L&preview_api=1"]; 

     NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
     [[NSURLConnection alloc] initWithRequest:request delegate:self]; 



     // Do any additional setup after loading the view from its nib. 
    } 

    -(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 
     data = [[NSMutableData alloc] init]; 
    } 
    -(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData{ 
     [data appendData:theData]; 
    } 
    -(void)connectionDidFinishLoading:(NSURLConnection *) connection{ 
     [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 

     news = [NSJSONSerialization JSONObjectWithData:data options:nil error:nil]; 
     [mainTableView reloadData]; 
    } 

    -(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ 
     UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"The data could not be downloaded - please make sure you're connected to either 3G or Wi-FI" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil]; 
     [errorView show]; 
     [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
    } 


    -(int)numberOfSectionsInTableView:(UITableView *)tableView{ 
     return 1; 
    } 
    -(int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
     return [news count]; 
    } 

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"]; 
     if (cell == nil) { 
      cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"]; 


      cell.textLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"title"]; 

     } 

     return cell; 
    } 

и В моей .H я есть NSArray * новости; и данные NSMutableData *.

Любая помощь была бы замечательной, не могли бы вы объяснить свое само собой разумеющееся, так как я новичок на этом языке.

ответ

2

Рассматривая логику, которую вы имеете в своем коде и образец JSON, который вы опубликовали, не похоже, что ваш массив заполняется тем, что вы хотите.

Изначально JSON представляет собой словарь (следовательно, фигурные скобки на изображении, которые вы предоставили). Таким образом, вы должны настроить свой первоначальный синтаксический разбор JSON на что-то вроде этого:

NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:nil error:nil]; 

Здесь вы можете получить ключ из словаря. Тот, который вы ищете, - это «массив», который также фактически является словарем, несмотря на его название.

NSDictionary *arrayDictionary = dictionary[@"array"]; 

Движемся вместе, наконец, вы можете получить доступ к «ресурсам» массив, который вы ищете, и вы можете хранить, что в переменной экземпляра, который вы создали в вашем файле .h.

news = arrayDictionary[@"resources"]; 

Теперь в методе cellForRowAtIndexPath вы можете получить доступ к различным элементам этого массива на основе ряда индекса пути, который предоставляется вам.

NSDictionary *newsItem = news[[indexPath row]]; 

Наконец, вы можете получить доступ к различным свойствам, таким как заголовки из этой новости, и установить текст текстовой метки.

NSString *title = newsItem[@"title"]; 
[[cell textLabel] setText:title]; 
+0

Hi Если я загружу почтовый индекс, вы можете быстро взглянуть, и ему трудно следовать. – Brent

+0

Ну, посмотрите, где вы разбираете словарь и настраиваете его на то, что я сказал в своем посте. Наконец, я также укажу вам на метод и логику, необходимые для доступа к названию. Дайте ему пойти и ответьте, если у вас возникнут проблемы. –

+0

Извините, я не понимаю, что последний бит? – Brent