import WebAPI
import MVVM

struct Page2ViewModel: Refreshable, Updateable, MutatingClosure {

    weak var binder: Binder?
    
    var isUpdate: Bool = false
    
    private(set) var cellViewModels: [Page2CellViewModel] = []
    private(set) var model: MainApodModel? {
        didSet {
            guard let model = model else {
                return
            }

            cellViewModels = model.result.map { Page2CellViewModel(model: $0) }
        }
    }
    
    init(binder: Binder)
    {
        self.binder = binder
        refresh()
    }

        
    mutating func refresh() {

        isUpdate = true

        let parameter = MainApodParameter()
        let copySelf = self

        Task { @MainActor in
            do {
                let model: MainApodModel = try await MainApodWebAPI().invokeAsync(parameter)
                
                copySelf.mutating { (mutatingSelf: inout Page2ViewModel) in
                    mutatingSelf.isUpdate = false
                    mutatingSelf.model = model
                }
                
            } catch let error {

                print(error.localizedDescription)

                copySelf.mutating { (mutatingSelf: inout Page2ViewModel) in
                    mutatingSelf.isUpdate = false
                }
            }
        }
    }
}

        
    

 

await之後是callback,這樣想就可以跟之前的做法接起來

小賢 發表在 痞客邦 留言(0) 人氣()

 

小賢 發表在 痞客邦 留言(0) 人氣()


小賢 發表在 痞客邦 留言(0) 人氣()

 

Privacy Policy

小賢 發表在 痞客邦 留言(0) 人氣()

截圖 2021-08-31 上午5.11.19

(Release 出現not match字樣)

小賢 發表在 痞客邦 留言(0) 人氣()