@AppStorage 和 UserDefaults ,为什么还要有ModelContainer

36 阅读1分钟

大家好,我的开源项目PakePlus可以将网页/Vue/React项目打包为桌面/手机应用并且小于5M只需几分钟,官网地址:pakeplus.com

@AppStorage / UserDefaults

轻量级简单数据:字符串、数字、布尔值、日期等基本类型

示例:用户设置、偏好配置、标记位

// 适合存储用户设置
@AppStorage("isDarkMode") var isDarkMode = false
@AppStorage("username") var username = ""
@AppStorage("lastLaunchDate") var lastLaunchDate = Date()

ModelContainer(SwiftData)

复杂对象数据:自定义类型、对象图、关系数据

示例:待办事项、用户数据、产品目录、社交帖子

// 复杂的数据模型
@Model
class TodoItem {
    var title: String
    var isCompleted: Bool
    var dueDate: Date
    var priority: Int
    @Relationship var tags: [Tag]  // 关系数据
}

@Model
class Tag {
    var name: String
    var color: String
}

使用场景对比

UserDefaults 适合:

用户偏好设置(主题、语言、字体大小)

应用配置信息

简单的标记(是否显示过引导页)

少量字符串或数值数据

SwiftData 适合:

列表数据(待办事项、联系人、商品)

关系型数据(用户-订单-商品)

需要查询和排序的数据

需要持久化的大量数据

需要复杂操作的数据(过滤、聚合、统计)

大家好,我是1024小神,技术群 / 私活群 / 股票群 或 交朋友 都可以私信我。 如果你觉得本文有用,一键三连 (点赞、评论、关注),就是对我最大的支持~