π ToDo App
A simple and elegant iOS ToDo list app built with UIKit and Core Data that lets you create, edit, and delete tasks with images and descriptions β all stored persistently on-device.
π Features
- π Addd new tasks with title, image, and detailed description.
- π Edit existing tasks.
- π Delete tasks with confirmation.
- πΌ Pick an image using
UIImagePickerController. - π§ Local data persistence with Core Data.
- π Efficient communication between view controllers using
NotificationCenter. - π± Smooth and responsive user interface.
- β Code quality enforced with SwiftLint
π§° Technologies Used Swift 5.0
UIKit
Core Data
Auto Layout
SwiftLint
MVC Architecture
π Architecture
This app follows the MVC pattern , organized into:
-
Model:
ToDoData.swift: A Swift struct representing a taskStorageManger.swift: Core Data logic for CRUD operations -
View: Custom
UITableViewCell, storyboard-based UI -
Controller:
ToDoViewController.swift: Main list of tasksAddTaskViewController.swift: Used for both creating and editingDetailsViewController.swift: Task details, edit and delete actions
π Project Structure
ToDoData.swift: Struct representing a task (title, image, and details)
ToDoViewController.swift: Main screen displaying the list of tasks
AddTaskViewController.swift: Form for adding and editing tasks
DetailsViewController.swift: Shows full task details with edit/delete options
StorageManger.swift: Core Data logic for CRUD operations
ToDoTableViewCell.swift: Custom cell to display task image and title
π¦ Core Data Operations
Create StorageManger.storeData(todo: ToDoData)
Read let todos = StorageManger.getData()
Update StorageManger.updateData(todo: updatedTask, index: taskIndex)
Delete StorageManger.deleteData(index: taskIndex)
π Requirements
iOS 13.0+
Xcode 14 or later
Swift 5.0+
UIKit-based application
π¦ Installation
1- Clone the repo 2- Open ToDoApp.xcodeproj in Xcode 3- Build & run on a simulator or real device
π½ Demo Video
π License This project is open-source and available under the MIT License.
π©βπ» Author Aya iOS Developer