1
나는 기능 다음에 완료 핸들러를Completion Handler dispatch_async에서 오류가 발생 했습니까?
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_get_main_queue(), {
completionHandler(appCategories)
})
오류 문이다
'dispatch_async이'인스턴스에 의해 대체되었습니다
메서드 'DispatchQueue.async (execute :)' 'dispatch_get_main_queue()'가 속성로 대체되었습니다.'DispatchQueue.main'
이 오류를 수정하는 방법?
나는
AppCategory.fetchFeatureApp { (appcategories) in
self.appcategories = appcategories
self.collectionView?.reloadData()
}
그것은 오류를 유형의
값을주고있다 '는 FeaturedViewController'가이 함수를 호출 오전에는 멤버 'appcategories 없다'
를 해결하는 방법 함수 호출?
는 handler.Is에게 해당 기능을 ... AppCategory.fetchFeatureApp {호출이 올바른 방법 완성형 (appcategories) in self.appcategories = appcategories self.collectionView? .loadData() } –