Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 完成处理程序分派\u async出现错误?_Swift_Grand Central Dispatch_Dispatch Async_Completionhandler - Fatal编程技术网

Swift 完成处理程序分派\u async出现错误?

Swift 完成处理程序分派\u async出现错误?,swift,grand-central-dispatch,dispatch-async,completionhandler,Swift,Grand Central Dispatch,Dispatch Async,Completionhandler,我在下面的函数中有一个完成处理程序 static func fetchFeatureApp(completionHandler:@escaping ([AppCategory1])->()){ let urlString="http://ebmacs.net/ubereats/Api/all_product?id=1" let url = URL(string: urlString)! URLSession.shared.dataTask(wit

我在下面的函数中有一个完成处理程序

static func fetchFeatureApp(completionHandler:@escaping ([AppCategory1])->()){
        let urlString="http://ebmacs.net/ubereats/Api/all_product?id=1"
        let url = URL(string: urlString)!

     URLSession.shared.dataTask(with: URLRequest(url: url)){ (data, responce, error) in
        if error != nil
            {
                print(error)
                return
            }
        do {
            if let jsonResult = try JSONSerialization.jsonObject(with:data!) as? [String:Any] {
                if let products = jsonResult["products"] as? [[String:String]] {
                    var appCategories = [AppCategory1]()
                    for product in products {
                        let category = AppCategory1(id: product["product_id"] ?? "",
                                                   name: product["product_name"] ?? "",
                                                   description: product["product_description"] ?? "",
                                                   url: product["image_url"] ?? "",
                                                   price: product["product_price"] ?? "")
                        appCategories.append(category)
                    }
                     print("Abc=")
                    print(appCategories)
                    dispatch_async(dispatch_get_main_queue(), {
                        completionHandler(appCategories)
                    })

                }
            }
        } catch {
            print(error)
        }
        }.resume()

    }
上述函数中的dispatch async出现错误

  dispatch_async(dispatch_get_main_queue(), {
                    completionHandler(appCategories)
                })
错误语句是

“dispatch_async”已被实例方法替换 'DispatchQueue.async(执行:)' “dispatch_get_main_queue()”已被属性替换 “DispatchQueue.main”

如何更正此错误

我正在调用此函数

 AppCategory.fetchFeatureApp { (appcategories) in
            self.appcategories = appcategories
            self.collectionView?.reloadData()
        }
这是一个错误

  dispatch_async(dispatch_get_main_queue(), {
                    completionHandler(appCategories)
                })
“FeaturedViewController”类型的值没有成员“appcategories”

如何更正函数调用?

这是现代(Swift 3及更高版本)语法:


我正在尝试使用参数completions handler调用此函数。这是调用该函数的正确方法吗?…AppCategory.fetchFeatureApp{(appcategories)in self.appcategories=appcategories self.collectionView?.reloadData()}