Hajar ELKOUMIKHI
Hajar ELKOUMIKHI

Reputation: 92

Retreiving data with Core Data

I'm working on a project where I should save data locally with Core Data.

Here is my workflow :

I have a bar button item that when clicked can show the latest filled form.

I tried this piece of code, where I fetch data from the database and affected to an array but the button seams not working at all and it never gets disabled ...

class ViewController: UIViewController {

    var userIdentity: UserIDentity = UserIDentity(context: PersistanceService.context)
    var identityArray = [UserIDentity]()


override func viewDidLoad() {
    super.viewDidLoad()
    self.fetchIdentityHistoryArray()
}


func fetchIdentityHistoryArray(){
    let fetchRequest: NSFetchRequest<UserIDentity> = UserIDentity.fetchRequest()
    
    do {
        let identityArray = try PersistanceService.context.fetch(fetchRequest)
        
        if identityArray.isEmpty {
                self.identityHistoryButton.isEnabled = false
            
        }
        else {
            self.identityHistoryButton.isEnabled = true
        }
    }
        catch {
            print("Error fetching sworn statement history !")
        }
    }


}

So I have 2 questions :

  1. What's wrong with my code ?
  2. How can I manage that when the user clicks on the "back button" for the first form filled ever, the "history button" can refresh itself and turn from disabled to enabled button ?

Any help is much appreciated. Thank you

Upvotes: 0

Views: 49

Answers (1)

Joakim Danielson
Joakim Danielson

Reputation: 51920

You are initialising a core data object directly in your code

var userIdentity: UserIDentity = UserIDentity(context: PersistanceService.context)

This new object will exist in Core Data and will be included everytime you execute the fetch request. You must understand that Core Data is not a database layer it is an object mapping layer so even if you haven't called save() yet the object exists in the Core Data context.

Either change the declaration to

var userIdentity: UserIDentity?

or remove it completely if it isn't used.

Upvotes: 1

Related Questions