-
-
Save sdbeng/9459358 to your computer and use it in GitHub Desktop.
#import "Event.h" | |
#import "AFNetworking.h" | |
@implementation Event | |
-(id)init { | |
self = [self initWithTitle:@"defaultTitle" initWithDetail:@"defaultDetail"]; | |
return self; | |
} | |
//-(id)initWithJSON { | |
//} | |
- (id)initWithTitle:(NSString *)aTitle | |
initWithDetail:(NSString *)aDetail { | |
self = [super init]; | |
if(self) { | |
self.title = aTitle; | |
self.detail = aDetail; | |
} | |
return self; | |
} |
[ | |
{ | |
title: "Intro to Objective-C", | |
detail: "Objective-C projects - 8:00AM" | |
}, | |
{ | |
title: "Main Keynote", | |
detail: "Some bright hackers here - 9:00AM" | |
}, | |
{ | |
title: "Cloud 501", | |
detail: "Deploy apps to the Cloud - 10:00AM" | |
} | |
] |
{ | |
"resultsDay1": [ | |
{ | |
"title": "Registration(1st day)", | |
"detail": "Main Hallway" | |
}, | |
{ | |
"title": "Pre-Conference", | |
"detail": "3 sessions starting at 12:00PM" | |
}, | |
{ | |
"title": "Opening Keynote", | |
"detail": "Beautiful sun @5txc" | |
} | |
], | |
"resultsDay2": [ | |
{ | |
"title": "Registration(2nd day)", | |
"detail": "Main Hallway" | |
}, | |
{ | |
"title": "event TBD", | |
"detail": "Silver room" | |
}, | |
{ | |
"title": "event TBD 2", | |
"detail": "Copper room" | |
} | |
] | |
} |
#import <UIKit/UIKit.h> | |
#import "Event.h" | |
@interface ScheduleTableViewController : UITableViewController | |
@property(strong,nonatomic) Event *event; | |
@property (strong, nonatomic) NSArray *eventData; | |
@end |
#import "ScheduleTableViewController.h" | |
#import "AFNetworking.h" | |
@interface ScheduleTableViewController () | |
@end | |
@implementation ScheduleTableViewController | |
- (void)viewDidLoad | |
{ | |
[super viewDidLoad]; | |
//self.event = [[Event alloc] initWithJSON]; | |
// [[NSNotificationCenter defaultCenter] | |
// addObserver:self | |
// selector:@selector(dataRetrieved) | |
// name:@"initWithJSONFinishedLoading" | |
// object:nil]; | |
NSURL *url = [[NSURL alloc] initWithString:@"http://backbone7.sdbapps.com/events2.json"]; | |
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; | |
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; | |
operation.responseSerializer = [AFJSONResponseSerializer serializer]; | |
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { | |
NSMutableArray *tempArray = [[NSMutableArray alloc] init]; | |
for (NSDictionary *oneDictionary in responseObject) { | |
Event *newEvent = [[Event alloc] initWithTitle:responseObject[@"title"] | |
initWithDetail:responseObject[@"detail"]]; | |
[tempArray addObject:newEvent]; | |
NSLog(@"The NSMutable tempArray is: %@", tempArray); | |
NSLog(@"The new created event instance is: %@", newEvent); | |
} | |
self.eventData = [[NSArray alloc] initWithArray:tempArray]; | |
NSLog(@"The final JSON array is: %@", self.eventData); | |
[self.tableView reloadData]; | |
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { | |
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Events!" | |
message:[error localizedDescription] | |
delegate:nil | |
cancelButtonTitle:@"Ok" | |
otherButtonTitles:nil]; | |
[alertView show]; | |
}]; | |
[operation start]; | |
} | |
#pragma mark - Table view data source | |
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath | |
{ | |
static NSString *CellIdentifier = @"Cell"; | |
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; | |
// Configure the cell... | |
Event *event = self.eventData [indexPath.row]; | |
cell.textLabel.text = event.title; | |
cell.detailTextLabel.text = event.detail; | |
return cell; | |
} |
Another concern I have is once the tableview is working with AFNetworking 2.0, would I be having issues adding push notifications? (I'm thinking Parse PNs). Since I need to add their API to my project. Last year I gave up on AFNet because I had a problem with both using json callbacks.
I have created a fork with my changes.
They include both some stylistic changes and hopefully a fix in your parsing.
You should try thinking a little about your data structure, i.e. how you want to store events in memory.
Because your problem was caused by a mismatch in how your server structures events and how your client code parses it.
Let's compare the nesting in events2.json with your code.
events2.json: dictionary => array => dictionary
Your code: dictionary
Here's the gist:
https://gist.github.com/kaspth/9461284
Conference iPhone app: I'm thinking to show a list of events per day by pushing an action button (right arrow) reloading data on the same tableview(avoiding to segue to 4 new scenes). This app will eventually have more properties once the basic app gets going. Thanks for your feedback and corrections.