私のコードはHTTP
リモート サーバーへのポスト コールを呼び出し、JSON
形式で結果を取得します。この JSON を抽出しましたが、これらの結果を SQLite に保存する必要があります。私の読書に基づくと、NSURLSessionDataTask
バックグラウンド スレッドなので、私の混乱は、SQL を開いて内部に挿入する必要completionHandler
があります (または) このタイプの要件を処理するための他のベスト プラクティスはありますか?
編集1
私がもっと苦労している点は、「completionHandler」内にSQLite操作を書くことは有効ですか? 「completionHandler」は、別のスレッド(SessionDataTaskを実行している)またはメインスレッドのメソッドと見なされますか?
編集2
私は CoreData 関連のソリューションにもオープンです。
どんな助けでも大歓迎です。
NSURL *loginUrl = [NSURL URLWithString:@"myurl"];
NSURLSession *session = [NSURLSession sharedSession];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:loginUrl];
request.HTTPMethod = @"POST";
NSString *ipData = [NSString stringWithFormat:@"uName=%@&pwd=%@",self.userName.text,self.userPwd.text];
request.HTTPBody = [ipData dataUsingEncoding:NSUTF8StringEncoding];
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *jsonError) {
NSLog(@"Inside post data task......");
NSHTTPURLResponse *httpResp = (NSHTTPURLResponse *)response;
if(httpResp.statusCode == 200)
{
NSLog(@"Response succesfull.........");
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
if(!jsonError)
{
//No Json error
NSString *uName = jsonDict[@"userName"];
NSString *uID = jsonDict[@"uID"];
//HOW CAN I INSERT THESE DETAILS TO SQLITE DB BEFORE CALLING SEGUE TO MOVE TO NEXT SCREEN?
dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"mysegueID" sender:self];
});
}
}else
{
NSLog(@"Response is not succesfulll...");
}
}];
[postDataTask resume];