两部分问题

Part one:个 我正在try 创建对数据库的异步请求.我目前正在同步做这件事,但是我想同时学习这两种方法,以更好地理解正在发生的事情.

目前,我已经像这样设置了我的同步呼叫.

- (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什么...如有任何示例/解决方案,将不胜感激.

Part two: 我一直在阅读有关多任务处理的文章,我想通过确保我的连接请求在出现中断时完成来支持它.我一直在关注这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];
}];

Ios相关问答推荐

SWIFT设备方向更新不正确

如何在PINCH上添加UITextfield以zoom 图像

在iOS中禁用URLSession自动重试机制

在滚动视图中固定页眉,但在页眉上方嵌入元素

SwiftData共享扩展阻止应用程序打开SQLite文件

发生错误.请稍后重试.在 App Store 连接中

当虚拟对象附加到其网格时,如何刷新创建 ARView 的 SwiftUI UIViewRepresentable?

如何在集合视图中创建装饰视图?

每次我路由到应用程序的主屏幕时,都无法使组合订阅正常工作

SwiftUI 每秒从 Timer 更新单个 @State 属性,每秒也重绘整个视图

UIView 阴影不适用于自定义扩展

我需要二进制文件来进行 App Store 应用程序传输吗?

我无法使用 Swift 将文件上传到 firebase

.onChange(of: ) 一次用于多个 @State 属性?

在 iPad 上删除列表的顶部和底部行

在 iOS 编程中使用 Storyboard 代替 xib 文件有什么好处?

Xcode 4.1 致命错误:自构建预编译头文件后修改了 stdlib

Xcode 项目格式:3.1、3.2、6.3 和 8.0 有什么区别?

iOS 10 错误:UICollectionView 接收到具有不存在索引路径的单元格的布局属性

如何用 Swift 圆化 UILabel 的边缘