はじめに
間違いがあるかもしれないです。
間違っていたらコメントください
delegateを使ってViewに通知する方法を学んだので記録しておきます。
実装
ViewController
import UIKit
class ViewController: UIViewController, SampleModelDelegate {
private let sampleModel = SampleModel()
override func viewDidLoad() {
super.viewDidLoad()
sampleModel.delegate = self
// ここでリクエスト
sampleModel.fetchAPI()
}
func sampleModel(_ sampleModel: SampleModel) {
print("レスポンスが返ってきました")
}
}
SampleModel
import Foundation
protocol SampleModelDelegate: AnyObject {
func sampleModel(_ sampleModel: SampleModel)
}
class SampleModel {
weak var delegate: SampleModel?
func fetchAPI() {
// APIリクエスト...
// レスポンスが返ってきたら通知
// ↓ API待ってる代わり
Thread.sleep(forTimeInterval: 5)
// ここでView側にあるsampleModelが実行される
delegate?.sampleModel(self)
}
}
おわり
どのようにデリゲートが実行されているのか知らなかったので勉強になりました。