NavigationParameter,可用來做頁面傳遞資料的一個封裝Model。

 

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

截圖 2022-02-26 下午8.47.20

 

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

 

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

頁尾加入


    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/styles/atom-one-dark.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/highlight.min.js"></script>
    <!-- and it's easy to individually load additional languages -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/languages/go.min.js"></script>

    


截圖 2021-09-28 上午3.19.50

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

ViewModel:

        

            import WebAPI
            import MVVM

            final class Page2ViewModel: ObservableObject, Refreshable, Updateable {

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

                        cellViewModels = model.result.map { Page2CellViewModel(model: $0) }
                    }
                }

                func refresh() {

                    isUpdate = true

                    let parameter = MainApodParameter()

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

                            print(error.localizedDescription)

                            isUpdate = false
                        }
                    }
                }
            }
        

ViewController:

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