I have a simple JSON feed which I can parse and see in the console but I can't seem to get it to display in my table view. I am using Xcode 5.0.2. I am not sure why I can see it in the for loop when echoed to the console, but not in the table view.
FYI, I am brand new to building in xcode and objective c and I am using this video tutorial as guide.
My Json looks like this:
[
{
"first_name": "Bill"
},
{
"first_name": "Ted"
},
{
"first_name": "George"
} etc...
]
PhotoTableViewController.h
#import
#import "DisplayViewController.h"
@interface PhotosTableViewController : UITableViewController {
IBOutlet UITableView *mainTableView;
NSArray *news;
NSMutableData *data;
}
@end
PhotoTableViewController.m
@interface PhotosTableViewController () {
NSMutableArray *photos;
NSArray *_locations;
}
- (void)viewDidLoad
{
NSURL *url = [NSURL URLWithString:@"http://feedurl.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
// some code left out for brevity
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
//return photos.count;
NSLog(@"news count: %lu", news.count);
return news.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = [[photos objectAtIndex:indexPath.row] objectForKey:@"first_name"];
NSLog(@"anything: %@", [[photos objectAtIndex:indexPath.row] objectForKey:@"first_name"] );
return cell;
}
- (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:0 error:nil];
NSDictionary *first_name;
for (int i=0; i (cant put less than sign here breaks code view) [news count] i++)
{
first_name = [news objectAtIndex:i];
NSLog(@"Statuses: %@", [first_name objectForKey:@"first_name"]);
}
[mainTableView reloadData];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"The download could not complete - please make sure you're connected to the internet." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[errorView show];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}