# 添加 / 删除 / 标记任务

URL: https://caijiao.org/swift/14-todo-app/05-crud
Source: docs/swift/14-todo-app/05-crud.md
Description: 本章节讲解待办事项 App 中如何实现添加、删除和标记任务功能，包含示例代码及状态更新逻辑，提升用户体验。

实现待办事项的增删改是核心功能，SwiftUI 结合状态管理使操作简洁高效。

## 添加任务

通过绑定输入框内容，创建新任务并加入列表：

```swift
@State private var todos: [TodoItem] = []
@State private var newTodoTitle: String = ""

func addNewTodo() {
    guard !newTodoTitle.isEmpty else { return }
    let newTodo = TodoItem(title: newTodoTitle)
    todos.append(newTodo)
    newTodoTitle = ""
}
````

## 删除任务

使用 `List` 的内置删除功能，结合 `onDelete` 处理删除操作：

```swift
List {
    ForEach(todos) { todo in
        Text(todo.title)
    }
    .onDelete { indexSet in
        todos.remove(atOffsets: indexSet)
    }
}
```

## 标记任务完成

通过点击切换任务完成状态：

```swift
ForEach($todos) { $todo in
    HStack {
        Image(systemName: todo.isCompleted ? "checkmark.circle.fill" : "circle")
            .onTapGesture {
                todo.isCompleted.toggle()
            }
        Text(todo.title)
            .strikethrough(todo.isCompleted)
    }
}
```

## 状态更新

利用 `@State` 或 `@ObservedObject` 确保界面随数据变化自动刷新。

## 小结

添加、删除和标记任务功能简单易实现，是待办事项 App 用户交互的基础。
