gpt4 book ai didi

iphone - 如何使用sendsynchronousRequest :queue:completionHandler:

转载 作者:IT王子 更新时间:2023-10-29 07:31:34 24 4
gpt4 key购买 nike

两部分问题

第一部分:我正在尝试创建对我的数据库的异步请求。我目前正在同步进行,但是我想同时学习这两种方法,以更好地理解正在发生的事情。

目前我已经像这样设置了我的同步调用。

- (IBAction)setRequestString:(NSString *)string
{
//Set database address
NSMutableString *databaseURL = [[NSMutableString alloc] initWithString:@"http://127.0.0.1:8778/instacodeData/"]; // imac development

//PHP file name is being set from the parent view
[databaseURL appendString:string];

//call ASIHTTP delegates (Used to connect to database)
NSURL *url = [NSURL URLWithString:databaseURL];

//SynchronousRequest to grab the data
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSError *error;
NSURLResponse *response;

NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if (!result) {
//Display error message here
NSLog(@"Error");
} else {

//TODO: set up stuff that needs to work on the data here.
NSString* newStr = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
NSLog(@"%@", newStr);
}
}

我想我需要做的是更换电话

NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

使用异步版本

sendAsynchronousRequest:queue:completionHandler:

但是我不确定要将什么传递给队列或 completionHandler...任何示例/解决方案将不胜感激。

第二部分:我一直在阅读有关多任务处理的信息,我想通过确保在出现中断时完成我的连接请求来支持它。我一直在关注这个example

它解释了如果发生中断如何获得更多时间,我明白它在做什么......但不知道如何将它应用于此连接?如果您有任何示例/教程可以帮助我弄清楚如何应用它,那就太棒了!

最佳答案

第 1 部分:

NSURL *url = [NSURL URLWithString:urlString];

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];

[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
if ([data length] > 0 && error == nil)
[delegate receivedData:data];
else if ([data length] == 0 && error == nil)
[delegate emptyReply];
else if (error != nil && error.code == ERROR_CODE_TIMEOUT)
[delegate timedOut];
else if (error != nil)
[delegate downloadError:error];
}];

关于iphone - 如何使用sendsynchronousRequest :queue:completionHandler:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9270447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com