大家好,我的开源项目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 适合:
列表数据(待办事项、联系人、商品)
关系型数据(用户-订单-商品)
需要查询和排序的数据
需要持久化的大量数据
需要复杂操作的数据(过滤、聚合、统计)