您好,我有swift2的json解析代码.2但当我在Swift 3.0中使用它时,会出现这种错误

视图控制器.swift:132:31:对成员"dataTask(with:completionHandler:)"的引用不明确

我的代码在这里

   let listUrlString =  "http://bla.com?batchSize=" + String(batchSize) + "&fromIndex=" + String(fromIndex)
    let myUrl = URL(string: listUrlString);
    let request = NSMutableURLRequest(url:myUrl!);
    request.httpMethod = "GET";

    let task = URLSession.shared().dataTask(with: request) {
        data, response, error in

        if error != nil {
            print(error!.localizedDescription)
            DispatchQueue.main.sync(execute: {
                AWLoader.hide()
            })

            return
        }

        do {

            let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSArray

            if let parseJSON = json {

                var items = self.categoryList

                items.append(contentsOf: parseJSON as! [String])

                if self.fromIndex < items.count {

                    self.categoryList = items
                    self.fromIndex = items.count

                    DispatchQueue.main.async(execute: {

                        self.categoriesTableView.reloadData()

                        AWLoader.hide()

                    })
                }else if( self.fromIndex == items.count){


                    DispatchQueue.main.async(execute: {

                        AWLoader.hide()

                    })

                }



            }

        } catch {
            AWLoader.hide()
            print(error)

        }
    }

    task.resume()

谢谢你的pip .

推荐答案

编译器被函数签名搞糊涂了.您可以这样修复它:

let task = URLSession.shared.dataTask(with: request as URLRequest) {

但是,请注意,我们不必将"request"转换为URLRequest.在此签名if中,它在前面声明为URLRequest,而不是NSMutableURLRequest:

var request = URLRequest(url:myUrl!)

这是在NSMutableURLRequest和新的URLRequest之间的自动选角,这是失败的,这迫使我们在这里进行选角.

Ios相关问答推荐

在SwiftUI中动态隐藏列表的空部分

在SwiftUI中为圆角矩形创建均匀分布的点轮廓

SwiftUI检测顶级和安全区域插图

如果没有等待,SWIFT Async让任务抛出取消异常

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

由于缺少 libarclite_iphonesimulator.a 文件,将 XCode 升级到 14.3 后无法在模拟器上运行 Flutter 应用程序

Swift Combine:prepend() before share() 阻止初始接收器执行

CGPath intersection(_:using:) 和朋友(iOS 16 中的新功能)坏了?

如何擦除 Swift 中的 Core Graphics Context 绘图?

xcode-select:找不到clang

辅助功能判断器无法在 macOS Monterey 版本 12.3 上的 Xcode 版本 13.3 上运行

判断Apple LiveText是否可用?

如何从 scendelegate 打开我的标签栏控制器

禁用 UITextField 的自动更正

Xcode - 错误 ITMS-90635 - Bundle 包中的 Mach-O 无效 - 提交到 App Store

在主线程上发布 NSNotification

以编程方式创建按钮并设置背景图像

iOS:设备旋转后如何运行函数(Swift)

闭包不能隐式捕获变异的 self 参数

从 Swift 转换为 Objective-c 的工具