Core Data 与 SwiftData
Apple 的老牌框架 Core Data 与 WWDC 2023 推出的现代框架 SwiftData 正面交锋。持久化层该如何正确选择?
Apple 现代化的声明式持久化框架
久经考验的 Swift SQLite 封装库
| 分类 | SwiftData | GRDB |
|---|---|---|
| 性能 | 7/10 | 10/10 |
| 学习难易度 | 9/10 | 7/10 |
| 生态系统 | 8/10 | 8/10 |
| 社区 | 7/10 | 8/10 |
| 就业市场 | 8/10 | 7/10 |
| 面向未来 | 9/10 | 8/10 |
import SwiftData
@Model
class Todo {
@Attribute(.unique) var id: UUID
var title: String
var isDone: Bool
var createdAt: Date
init(title: String) {
self.id = UUID()
self.title = title
self.isDone = false
self.createdAt = .now
}
}
// 在 SwiftUI 视图中使用
@Query(sort: \.createdAt, order: .reverse) var todos: [Todo]import GRDB
struct Todo: Codable, FetchableRecord, PersistableRecord {
var id: UUID
var title: String
var isDone: Bool
}
let todos = try dbQueue.read { db in
try Todo
.filter(Column("isDone") == false)
.order(Column("createdAt").desc)
.fetchAll(db)
}面向新的 iOS 17+ 应用、以 SwiftUI 为主、标准 CRUD 场景 → 选 SwiftData。性能关键、复杂查询、需要 iOS 13+ 支持 → 选 GRDB。遗留项目中的 Core Data → 迁移到 GRDB,新项目则默认使用 SwiftData。
获取免费咨询有,主要用于遗留支持。新项目应选择 SwiftData 或 GRDB。SwiftData 抽象掉了 Core Data 本身的一些痛点(比如 NSManagedObjectContext 等)。