无法将类型“()”的值分配给完成处理程序中的类型“[Category]”
Cannot assign value of type '()' to type '[Category]' in completion handler
我创建了一个 Servicemodel class 作为单例,用于在我的 Viewcontroller 中从服务器取回数据(我使用 Alamofire) getcategories 方法出现错误 无法将类型“()”的值分配给类型“[Category]”
class ServiceModel {
static let shared = ServiceModel()
var categories = [Category]()
func getcategories(completion:@escaping([Category]) -> ()){
Alamofire.request("http://sample.com/api/getExpertises",
method: .post, parameters: ["Id":2]).responseJSON {
(response) in
if response.result.isSuccess{
if let data = response.data{
let experts = JSON(data)
for i in experts{
let id = i.1["id"].string!;
let title = i.1["expertise"].string!
self.categories.append(Category(id:Int(id)!,title: title))
}
completion(self.categories);
}
}
}
}
}
并在 ViewController 中:
categories = ServiceModel.shared.getcategories(completion: {
//in this line i get error
(Categories) in
print(Categories)
})
错误说 getcategories
的 return 是 ()
不能分配给 Category
类型的数组 categories
,所以里面 ViewController
应该是
var categories = [Category]()
ServiceModel.shared.getcategories { res in
print(res)
self.categories = res
// or
print(ServiceModel.shared.categories)
}
我创建了一个 Servicemodel class 作为单例,用于在我的 Viewcontroller 中从服务器取回数据(我使用 Alamofire) getcategories 方法出现错误 无法将类型“()”的值分配给类型“[Category]”
class ServiceModel {
static let shared = ServiceModel()
var categories = [Category]()
func getcategories(completion:@escaping([Category]) -> ()){
Alamofire.request("http://sample.com/api/getExpertises",
method: .post, parameters: ["Id":2]).responseJSON {
(response) in
if response.result.isSuccess{
if let data = response.data{
let experts = JSON(data)
for i in experts{
let id = i.1["id"].string!;
let title = i.1["expertise"].string!
self.categories.append(Category(id:Int(id)!,title: title))
}
completion(self.categories);
}
}
}
}
}
并在 ViewController 中:
categories = ServiceModel.shared.getcategories(completion: {
//in this line i get error
(Categories) in
print(Categories)
})
错误说 getcategories
的 return 是 ()
不能分配给 Category
类型的数组 categories
,所以里面 ViewController
应该是
var categories = [Category]()
ServiceModel.shared.getcategories { res in
print(res)
self.categories = res
// or
print(ServiceModel.shared.categories)
}