Core Data vs SwiftData
Le vétéran d'Apple, Core Data, face au SwiftData moderne présenté à la WWDC 2023. Quel est le bon choix pour sa couche de persistance ?
Le framework de persistance déclaratif moderne d'Apple
Wrapper SQLite éprouvé pour Swift
| Catégorie | SwiftData | GRDB |
|---|---|---|
| Performance | 7/10 | 10/10 |
| Facilité d'apprentissage | 9/10 | 7/10 |
| Écosystème | 8/10 | 8/10 |
| Communauté | 7/10 | 8/10 |
| Marché de l'emploi | 8/10 | 7/10 |
| Pérennité | 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
}
}
// Dans une vue 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)
}Nouvelle app iOS 17+, forte utilisation de SwiftUI, CRUD standard → SwiftData. Performance critique, requêtes complexes, support iOS 13+ → GRDB. Sur les projets legacy avec Core Data → migrer vers GRDB, sur les nouveaux projets → SwiftData par défaut.
Obtenir une consultation gratuiteOui, pour le support legacy. Pour les nouveaux projets, SwiftData ou GRDB. Les difficultés propres à Core Data (NSManagedObjectContext, etc.) sont abstraites dans SwiftData.