From f2c5133e79446e24a18d65dde57f244b51ca43fa Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Thu, 20 Feb 2025 17:04:42 +0800 Subject: [PATCH] add cache --- dimensionhub/Core/DataCache.swift | 22 ++++++++++++++++++++++ dimensionhub/Views/DateNavView.swift | 22 ++++++++++++++-------- 2 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 dimensionhub/Core/DataCache.swift diff --git a/dimensionhub/Core/DataCache.swift b/dimensionhub/Core/DataCache.swift new file mode 100644 index 0000000..4634746 --- /dev/null +++ b/dimensionhub/Core/DataCache.swift @@ -0,0 +1,22 @@ +// +// DataCache.swift +// dimensionhub +// +// Created by 安礼成 on 2025/2/20. +// + +actor DataCache { + + public static let shared = DataCache() + + private var dateModelCache: [DateNavView.DateModel] = [] + + func setDateModelCache(_ models: [DateNavView.DateModel]) { + self.dateModelCache = models + } + + func getDateModelCache() -> [DateNavView.DateModel] { + return self.dateModelCache + } + +} diff --git a/dimensionhub/Views/DateNavView.swift b/dimensionhub/Views/DateNavView.swift index 3c9eaf2..70ce1b9 100644 --- a/dimensionhub/Views/DateNavView.swift +++ b/dimensionhub/Views/DateNavView.swift @@ -42,14 +42,20 @@ struct DateNavView: View { } } .task { - let response = await API.getDateIndex(as: [DateNavView.DateModel].self) - switch response { - case .error(let code, let message): - print(code) - print(message) - case .result(let result): - print(result) - self.dateModels = result + let models = await DataCache.shared.getDateModelCache() + if models.count > 0 { + self.dateModels = models + } else { + let response = await API.getDateIndex(as: [DateNavView.DateModel].self) + switch response { + case .error(let code, let message): + print(code) + print(message) + case .result(let result): + print(result) + self.dateModels = result + await DataCache.shared.setDateModelCache(result) + } } } }