Core Data مقابل SwiftData
المحارب القديم من Apple، Core Data، يواجه SwiftData الحديث الذي أُعلن في WWDC 2023. أي خيار هو القرار الصحيح لطبقة الاستمرارية (persistence)؟
إطار عمل استمرارية تصريحي حديث من Apple
غلاف SQLite مُختبَر ميدانيًا لـ Swift
| الفئة | 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. تحديات Core Data الخاصة (مثل NSManagedObjectContext وغيرها) جرى تجريدها في SwiftData.