nsurl 非同期に関する多くのチュートリアルを見てきました。私はそれらのチュートリアルに従い、以下を実装しました。
-(id) connect_asych:(NSDictionary *)input page:(NSString *)page{
NSString* urlString= [@"*s.com/music/" stringByAppendingString:page];
NSURL *url = [NSURL URLWithString:urlString];
//initialize a request from url
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[url standardizedURL]];
//set http method
[request setHTTPMethod:@"POST"];
//initialize a post data
NSString *post = [self convert:input];
//set request content type we MUST set this value.
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
//set post data of request
[request setHTTPBody:[post dataUsingEncoding:NSUTF8StringEncoding]];
NSError *error = nil;
NSHTTPURLResponse *responseCode = nil;
NSOperationQueue *queue = [NSOperationQueue mainQueue];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error1) {
if(error !=nil){
_responseData=nil;
}
[_responseData appendData: data];
NSLog(@"%@",_responseData);
}];
id object = [NSJSONSerialization JSONObjectWithData:_responseData options:NSJSONReadingAllowFragments error:&error];
if(error !=nil){
_error=[[NSString alloc] initWithFormat:@"error"];
return error;
}
return object;
}
ビューがロードされた場合、上記のメソッドを呼び出しました。
同期メソッドを使用して、データベースからデータを正常に取得しました。問題は、非同期メソッドを使用したときにデータを取得できなかったことです。viewdidload で非同期メソッドを呼び出す必要がありますか?