Я пытаюсь создать приложение, которое будет извлекать данные JSON из HTTP-запроса, отправлять их главному контроллеру приложения как объект JSON, а затем оттуда выполнять дальнейшую обработку с ним.
Где яНа самом деле я создаю класс, который будет служить классом JSON, в котором он будет принимать URL, захватывать данные и возвращать этот объект.
В одиночку я могу заставить этот класс работать, однако я могуя не могу заставить класс хранить объект для моего главного контроллера, чтобы получить его.
Поскольку я довольно новичок в самом Objective-C, мои мысли таковы, что я испортил свой вызов init:
-initWithURL:(NSString *) value
{
responseData = [[NSMutableData data] retain];
NSURL *theURL = [NSURL URLWithString:value];
NSURLRequest *request = [NSURLRequest requestWithURL:theURL];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
return self;
}
Обработка объекта JSON происходит здесь:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];
NSError *jsonError;
SBJSON *json = [[SBJSON new] autorelease];
NSDictionary *parsedJSON = [json objectWithString:responseString error:&jsonError];
// NSArray object.
listings = [parsedJSON objectForKey:@"posts"];
NSEnumerator *enumerator = [listings objectEnumerator];
NSDictionary* item;
// to prove that it does work.
while (item = (NSDictionary*)[enumerator nextObject]) {
NSLog(@"posts:id = %@", [item objectForKey:@"id"]);
NSLog(@"posts:address = %@", [item objectForKey:@"address"]);
NSLog(@"posts:lat = %@", [item objectForKey:@"lat"]);
NSLog(@"posts:lng = %@", [item objectForKey:@"lng"]);
}
[responseString release];
}
Теперь при вызове объекта в основном контроллере у меня есть этот бит кода в вызове метода viewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
JSON_model *jsonObj = [[JSON_model alloc] initWithURL:@"http://localhost/json/faith_json.php?user=1&format=json"];
NSEnumerator *enumerator = [[jsonObj listings] objectEnumerator];
NSDictionary* item;
//
while (item = (NSDictionary*)[enumerator nextObject]) {
NSLog(@"posts:id = %@", [item objectForKey:@"id"]);
NSLog(@"posts:address = %@", [item objectForKey:@"address"]);
NSLog(@"posts:lat = %@", [item objectForKey:@"lat"]);
NSLog(@"posts:lng = %@", [item objectForKey:@"lng"]);
}
}