当前位置: 首页 > 面试题库 >

Swift 3 URLSession.shared()对成员'dataTask(with:completionHandler :)的引用不正确(错误)

拓拔飞飙
2023-03-14
问题内容

您好,我有适用于swift2.2的json解析代码,但是当我将其用于Swift 3.0时,出现了该错误

ViewController.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()

感谢您的想法。


问题答案:

函数签名使编译器感到困惑。您可以这样解决:

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

但是请注意, 如果 早先声明为而不是,则我们不必像URLRequest此签名一样强制转换“ request” :
__URLRequest``NSMutableURLRequest

var request = URLRequest(url:myUrl!)

这是NSMutableURLRequest新的之间的自动转换,并且自动转换URLRequest失败,这迫使我们在这里进行转换。



 类似资料:
  • 问题内容: 我有一个70/80字段表单,需要将其插入表中,因此与其手动创建一个巨大的insert语句,不如我首先从db表单中的输入名称在db中创建了一个表,这是我使用的代码创建/更改表 这可以正常工作,并且完全按照我的需要更改了表格。现在,要插入表单值以执行此操作,我执行了一个基本的字段插入操作,以存储行的ID,然后循环所有更新该行的发布变量。这是我的代码: 这引发了绑定参数错误,我不知道为什么。

  • 我正在编译一个scala应用程序,我发现了标题中键入的错误。 Scala版本:Scala 2.11.8 Spark版本:Spark 1.6.1 Intellij:20161.3 libraryDependencies+=“org.apache.spark”%%“Spark-core”%“1.6.1” scala和spark版本之间可能不兼容?

  • 请看下图,我们正在使用引导转盘旋转图像。但是,当窗口宽度较大时,图像不会与边框正确对齐。 但是bootstrap提供的carousel示例始终工作良好,无论窗口的宽度如何。遵循代码。 有人能解释为什么carousel的行为有所不同吗?这是否与映像大小有关,或者缺少某些引导配置?

  • 它可能是重复的,但我尝试了所有我在StackOverflow上找到的解决方案。 我不能使用但我不能。我尝试修改我的makefile太多次了。我的最后一个配置是: Android.mk LOCAL_PATH:=$(调用my-dir) 包括$(LOCAL_PATH)/jsoncpp/android.mk 包括/users/rafaelruizmunoz/desktop/androiddevelopme

  • 请帮帮我 致命错误:在第104行的/home/u357965800/public_html/include/class.admin.php中对非对象调用成员函数prepare()

  • 我在尝试展平高度嵌套的结构时遇到以下错误: 组织。阿帕奇。火花sql。AnalysisException:对字段StructField(错误、StructType(数组、ArrayType(StructType(double,DoubleType,true)、StructField(int,IntegerType,true)、StructField(string,StringType,true))