swift - 无法将类型 '()' 的值分配给完成处理程序中的类型 '[Category]'

标签 swift model alamofire

我创建了一个 Servicemodel 类作为单例,用于从服务器获取数据(我在我的 Viewcontroller 中使用 Alamofire),当我想使用 getcategories 方法时出现错误 Cannot assign value of type '()' 以键入 '[类别]'

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)
}

关于swift - 无法将类型 '()' 的值分配给完成处理程序中的类型 '[Category]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57059303/

相关文章:

macos - [NSSearchField 对象] : unrecognized selector sent to instance

swift - 场景套件的 Renderer.OnBecameVisible?

ios - 向滚动 UITableView 添加渐变

design-patterns - 存储库/模型中的业务逻辑好吗?

ruby-on-rails - Rails 角色模型默认(如果不存在)

ios - 如何等到 alamofire 图像请求完成

swift - postman 和 alamofire 之间的响应时间

swift - 如何从不同的 View Controller 调用函数?

python - 获取 auth_user 的所有 Django 级联依赖模型

ios - 使用 Swift 通过 PHP 将图像上传到我的服务器