func fetchTasks() let request: NSFetchRequest<TaskItem> = TaskItem.fetchRequest() request.sortDescriptors = [NSSortDescriptor(keyPath: \TaskItem.creationDate, ascending: false)] do tasks = try context.fetch(request) catch print("Fetch error: \(error.localizedDescription)")
struct AddTaskView: View @Environment(\.dismiss) private var dismiss @State private var title = "" @State private var dueDate: Date? = nil @State private var showDatePicker = false
// MARK: - Helper CRUD
var body: some View NavigationStack Form Section(header: Text("Task")) TextField("Title", text: $title) Section Toggle("Set due date", isOn: Binding( get: showDatePicker , set: showDatePicker = $0; if !$0 dueDate = nil )) if showDatePicker DatePicker("Due", selection: Binding( get: dueDate ?? Date() , set: dueDate = $0 ), displayedComponents: .date) .navigationTitle("New Task") .toolbar ToolbarItem(placement: .cancellationAction) Button("Cancel") dismiss() ToolbarItem(placement: .confirmationAction) Button("Save") onSave(title, dueDate) dismiss() .disabled(title.trimmingCharacters(in: .whitespaces).isEmpty)
var body: some View HStack Image(systemName: task.isCompleted ? "checkmark.circle.fill" : "circle") .foregroundColor(task.isCompleted ? .green : .secondary) .onTapGesture(perform: toggleAction) swift to-do list 11 crack
func markSelectedAsCompleted() tasks.filter selection.contains($0.id ?? UUID()) .forEach $0.isCompleted = true PersistenceController.shared.save()
final class TaskListViewModel: ObservableObject @Published var tasks: [TaskItem] = [] @Published var showAddTaskSheet = false @Published var selection = Set<UUID>() // For multi‑selection "checkmark
struct TaskListView: View @StateObject private var viewModel = TaskListViewModel() @Environment(\.editMode) private var editMode
func addTask(title: String, dueDate: Date? = nil) PersistenceController.shared.addTask(title: title, dueDate: dueDate) = nil) PersistenceController
Prepared for developers who are following a “Swift To‑Do List” tutorial series (episode 11) or who want a concise reference for the concepts covered in that stage of the project. | Episode | Core Goal | Typical New Feature Introduced | |---------|-----------|--------------------------------| | 1‑2 | Project scaffolding, UI basics | Simple list using UITableView / List | | 3‑5 | Data persistence basics | UserDefaults , Codable | | 6‑8 | Refactoring & MVVM | View‑model separation, bindings | | 9‑10 | Advanced UI/UX | Swipe actions, drag‑and‑drop reordering | | 11 | Full‑featured persistence & editing | Core Data integration, inline editing, and multi‑selection |