我正在尝试使用以下邮政编码和dataTaskWithURL:completionHandler来确保我的应用程序没有卡住:
NSString *rawStr = [NSString stringWithFormat:@"comments=%@&commentsDate=%@&commentsTime=%@&title=%@&userName=%@&qasidaNumber=%@&theUserId=%@%@%@", textComments.text, lbDate.text, lbTime.text, self.lbTitle.text, self.lbUserName.text , self.lbQasidaId.text, toSaveLink, toSaveUser, myJpg];
NSData *data = [rawStr dataUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:@"http://MyWebSite.com/InsertNotes.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:data];
NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSLog(@"responseData: %@", responseData);
我的问题是如何在dataTaskWithURL:completionHandler
中使用代码答案 0 :(得分:0)
由于您正在构建NSURLRequest
,因此您可能需要dataTaskWithRequest
而不是dataTaskWithURL
。话虽如此,你可以像这样使用它:
NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// use `data` and `error` here
dispatch_async(dispatch_get_main_queue(), ^{
// update your UI here
});
}];
[task resume];
// do not use `data` here, though
请记住,completionHandler
可以在后台线程上运行,因此如果要从块中更新UI或模型对象,则必须手动将其重新分配回主队列,如上所示。
有关详细信息,请参阅WWDC 2013视频What's New in Foundation Networking,其中向我们介绍NSURLSession
。