【发布时间】:2018-07-30 03:20:24
【问题描述】:
我一直在努力通过我制作的另一个课程来更新我的表格视图。 然后我找到了这个stackoverflow解决方案: How to access and refresh a UITableView from another class in Swift
但是当我一步一步执行所有代码时,我得到以下错误:
我的台词:
weak var delegate: UpdateDelegate?
得到警告
'weak' may only be applied to class and class-bound protocol types, not 'UpdateDelegate'
还有我的台词:
self.delegate.didUpdate(self)
收到警告:
Instance member 'delegate' cannot be used on type 'APIgetter'
这可能是因为代码太旧而我使用的是 swift 4 吗?否则我不明白为什么这应该失败。我希望你能帮助我:)
更新:
我的协议:
protocol UpdateDelegate: AnyObject {
func didUpdate(sender: APIgetter)
}
我的 ViewController 中包含 tableview 的片段:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UpdateDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
APIgetter.addDataFromSQL()
let updates = APIgetter()
updates.delegate = self
}
//update func
func didUpdate(sender: APIgetter) {
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
我在 APIgetter.swift 中的 APIgetter 类:
class APIgetter {
weak var delegate: UpdateDelegate?
class func addDataFromSQL (){
//Code to fetch data from API
//Code that comes after DispatchQueue.global & DispatchQueue.main and my result being executed
//result
self.delegate.didUpdate(self)
【问题讨论】: