【发布时间】:2018-09-30 18:19:42
【问题描述】:
我正在使用协议和委托将 api 数据保存到委托方法和另一个类中,获取它。但在二等舱,当我宣布这个属性时。它显示一条错误消息。
'DepartmentDataDelegate' 无法构造,因为它没有 可访问的初始化器
A 类: 将 api 数据保存协议添加到委托方法中。
protocol DepartmentDataDelegate {
func showDepttData(departments: [String : Any])
}
var delegate: DepartmentDataDelegate?
将api数据存储到协议方法中
do {
//create json object from data
if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: [Any]] {
//print("POST Method :\(json)")
DispatchQueue.main.async {
for eachDepartment in json["departments"]!
{
let eachData = eachDepartment as! [String: Any]
self.delegate?.showDepttData(departments: eachData)
}
self.tableView.reloadData()
}
// handle json...
}
} catch let error {
print(error.localizedDescription)
}
B 类: 此类正在获取部门数据并在此处打印。
class ShowEmpVC: UIViewController, DepartmentDataDelegate {
//Department Data Delegate
var depttDelegate = DepartmentDataDelegate()
var depttData = [String : Any]()
override func viewDidLoad() {
super.viewDidLoad()
depttDelegate = self
print("Departmens are : \(depttData)")
}
}
【问题讨论】:
-
您实际上无法构造它,您需要创建对声明协议的类 A 的引用 在类 b 中,只需使用该类 A 引用将委托设置为 self
-
我是第一次使用,你能解释一下如何使用吗?
-
在您的
Class B中,您会执行类似var obj = ClassA()然后obj.delegate = self的操作 -
这个查询解决了吗?
标签: ios swift api delegates protocols