swift - 无法将类型“()”的值分配给完成处理程序中的类型“[Category]”
问题描述
当我想使用 getcategories 方法时,我创建了一个 Servicemodel 类作为单例,用于从我的 Viewcontroller 中的服务器取回数据(我使用 Alamofire )我收到错误无法将类型“()”的值分配给类型“[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
是()
不能分配给categories
类型数组Category
,所以里面ViewController
应该像
var categories = [Category]()
ServiceModel.shared.getcategories { res in
print(res)
self.categories = res
// or
print(ServiceModel.shared.categories)
}
推荐阅读
- javascript - Angular 9 应用程序“NgFor 仅支持绑定到 Iterables,例如数组”错误
- unity3d - 选择 Sprite 窗口在我输入每个字母后都有延迟,因为 Unity 过滤精灵
- r - R - 计算文本字符串变量中的单词数
- django - Heroku 阻止 bokeh.js 脚本
- javascript - Angular 中的 Chart.js 图表在调整浏览器窗口大小之前不会加载
- php - PHP 警告:在遍历数组时出现非法字符串偏移 ''
- node.js - 如何通过部署 Node.js AWS Beanstalk 解决 /tmp/.config 中的权限问题?
- html - 如何在网站加载时摆脱颜色闪烁
- asp.net-core - 如何为其他应用程序可以访问特定服务的应用程序实施适当的登录系统?
- java - 无法使用 spring-boot 应用程序从 Jaeger UI 跟踪服务