SwiftUI vs UIKit
Apple'ın modern deklaratif framework'ü SwiftUI ile battle-tested UIKit arasındaki kapsamlı karşılaştırma. 2025'te hangi framework'ü seçmelisiniz?
Mobil-first reaktif veritabanı
Apple'ın nesne grafiği framework'ü
// Realm Swift — reaktif veri modeli
import RealmSwift
// Veri modeli
class Task: Object, ObjectKeyIdentifiable {
@Persisted(primaryKey: true) var id: ObjectId
@Persisted var title: String = ""
@Persisted var isCompleted: Bool = false
@Persisted var createdAt: Date = Date()
}
// SwiftUI ile reaktif kullanım
struct TaskListView: View {
@ObservedResults(Task.self) var tasks
var body: some View {
List {
ForEach(tasks) { task in
TaskRow(task: task)
}
}
.toolbar {
ToolbarItem {
Button("Ekle") {
$tasks.append(Task())
}
}
}
}
}// Core Data + SwiftData — iOS 17+ modern yaklaşım
import SwiftData
import SwiftUI
// SwiftData modeli (@Model makrosu ile)
@Model
class Task {
var id: UUID
var title: String
var isCompleted: Bool
var createdAt: Date
init(title: String) {
self.id = UUID()
self.title = title
self.isCompleted = false
self.createdAt = Date()
}
}
// SwiftUI ile kullanım
struct TaskListView: View {
@Environment(\.modelContext) private var context
@Query(sort: \.createdAt) var tasks: [Task]
var body: some View {
List(tasks) { task in
Text(task.title)
.strikethrough(task.isCompleted)
}
}
func addTask() {
let task = Task(title: "Yeni görev")
context.insert(task)
}
}Çapraz platform ve gerçek zamanlı senkronizasyon gerektiren projeler için Realm açık ara önde. Yalnızca Apple platformunu hedefleyen, CloudKit entegrasyonu isteyen veya Xcode ekosistemiyle derin uyum arayan projeler için Core Data (veya iOS 17+'de SwiftData) daha doğal bir tercih.
SwiftData (iOS 17+), Core Data'nın @Model makroları ve Swift-native API ile modernize edilmiş halidir. Arka planda Core Data'ya dayanır; ancak boilerplate'i büyük ölçüde azaltır. Yeni projelerde SwiftData tercih edilmeli, legacy projeler Core Data'da kalabilir.