Swift CoreData是否适合每天保存信息和永久保存某些信息?

Swift CoreData是否适合每天保存信息和永久保存某些信息?,swift,core-data,swiftui,Swift,Core Data,Swiftui,到目前为止,我几乎已经完成了我的应用程序,用户可以设置每日卡路里目标,并将食物添加到他们的每日卡路里进度中。但是,我现在想让我的应用程序保存每天的卡路里进度,直到一天结束,但在用户更改卡路里目标之前,要永久保留有关用户卡路里目标的信息。我的问题是,我应该为此使用coreData吗,因为在项目完成之前我还没有设置它。如果有人有任何建议,请让我知道:) 还有这些是我的模型,它们是环境对象: import Foundation class UserInfoModel: ObservableObjec

到目前为止,我几乎已经完成了我的应用程序,用户可以设置每日卡路里目标,并将食物添加到他们的每日卡路里进度中。但是,我现在想让我的应用程序保存每天的卡路里进度,直到一天结束,但在用户更改卡路里目标之前,要永久保留有关用户卡路里目标的信息。我的问题是,我应该为此使用coreData吗,因为在项目完成之前我还没有设置它。如果有人有任何建议,请让我知道:)

还有这些是我的模型,它们是环境对象:

import Foundation

class UserInfoModel: ObservableObject {
    
    static let shared: UserInfoModel = UserInfoModel() // <<: Here

    struct UserInfo: Identifiable {
        var id = UUID()
        var firstName: String
        var height: Double
        var weight: Double
        var gender: String
        var age: Double
        var activityLevel: String
        var BMR: Double
    
struct DailyCalorieGoals: Identifiable{
        var id = UUID()
        var calorieGoal: Double
        var fatGoal: Double
        var proteinGoal: Double
        var carbGoal: Double

    }
    
    struct CurrentCalorieProgress: Identifiable{
        var id = UUID()
        var calorieProgress: Double
        var fatProgress: Double
        var carbProgress: Double
        var proteinProgress: Double

    }



 @Published var personUserInfo = UserInfo.init(firstName: "",  height: 0, weight: 0, gender: "", age: 0, activityLevel: "", BMR: 0)
    @Published var personDailyCalorieGoals = DailyCalorieGoals.init(calorieGoal: 2400, fatGoal: 40, proteinGoal: 40, carbGoal: 40)
    @Published var personCurrentCalorieProgress = CurrentCalorieProgress.init(calorieProgress: 1200, fatProgress:   12, carbProgress: 5, proteinProgress: 30)
    
    @Published var  recipeNutrientsSearch = SearchRecipeCalories.init(fat: 0, carb: 0, protein: 0)
    

}
<代码>导入基础 类UserInfoModel:observeObject{ 静态让共享:UserInfoModel=UserInfoModel()// 我的问题是,我应该为此使用coreData吗

让我们用消去法来回答这个问题

你说:

但是,我现在想让我的应用程序保存每天的卡路里进度,直到一天结束

  • UserDefaults。否,因为
    UserDefaults
    用于少量有限的信息。任何增长的数据都不应存储在那里。虽然这可能是最容易保存的方法,但它不适合在这里使用

  • 网络。你的电话。但很可能不是。对于简单的任务来说,它有点太复杂,可能会导致糟糕的用户体验,更不用说不必要的维护和/或第三方参与了

  • 创建您自己的SQL数据库,同样是您的职责,但为什么要经历这种不必要的复杂性,而CoreData正是为此目的而创建的呢


CoreData显然是这里的赢家。快速、用户友好(一旦掌握了窍门)而且苹果似乎非常关心这个框架,所以不必担心将来会遭到反对。你可以阅读更多关于CoreData的信息。我认为这些数据是你的客户的日志数据,你以后可能会用到这些数据。在我看来,使用一个简单的elasticSearch安装服务器端,并在本地以用户默认值保存大约100个日志的数据然后将它们上传到服务器并在本地删除。这方面的一个好处是elasticSearch将为您和ES rest api提供所有选项,使用非常简单,您可以获得关于客户如何记录数据以及如何更改数据的非常有趣的见解。

在做了一些研究之后,我也选择了此信息。但是,谢谢您ou用于分解其他选项!对我来说,这看起来像是可以存储在文件中的东西,而不是使用复杂的解决方案,如核心数据。如果使用JSON和可编码协议,实现应该非常简单。如果第二天就要删除,用户输入他们的每日卡路里摄入量有什么意义?o在本地保存大量数据而不提供api来删除数据的一个问题是,您的应用程序有被删除或卸载的风险。