/TaskTrack

Primary LanguageSwift

Task Track

A simple application to add tasks and track whether they have been completed or not

I used :

  • Core Data to save and retrieve data when close the application and open it again
  • 'Charts'Cocopods to display the data on chart

Core Data

import CoreData

  • start with declaring the variable as 'context'
  • Our managed object context manages the changes that have been made to the objects
   let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
  • Whether we are creating, updating, or deleting records, in order for those changes to persist we must call save on the managed object context, I declare it as a reference to that method
    let saveContext = (UIApplication.shared.delegate as! AppDelegate).saveContext

Create Objects

Here, I created my Entity and called it Task, and it has some features :

Screen Shot 1443-06-22 at 3 42 03 PM

how to fetch it ?

    func fetchData(){
      
        // fetch our Entity task
        let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Task")
                do {
                    
                    let results = try context.fetch(fetchRequest)
                    // add the result as an array of this entity
                     TaskList = results as! [Task]

                } catch {
                    print("\(error)")
                }
        
        //update our Tasks Table View
        tableView.reloadData()

    }

add new Object to our entity

    func addNewTask(title : String , dec : String , date :Date)
   {
       
       //create new object
       let newTask = Task(context: self.context)
       // set its value
       newTask.title = title
       newTask.desc = dec
       newTask.date = date
       newTask.status = "unCompleted"
       // save it to conext
       saveContext()

   }

delete Object in our entity

   func deleteTask(removedTask : Task){
      context.delete(removedTask)
      saveContext()

      
  }

Update Object in our entity

   func changeStatusToCompleted(editedTask : Task){
  
      editedTask.status = "Completed"
      saveContext()

  }