How often do I need to call this code?
each time the application is launched
I cache the data per User. If the User logs out of the app, I would like to delete all of the data/objects (or the datastore?), any suggestion on what's the best practice to do this?
If you want to delete everything, then destroy the managed object context and store coordinator and delete the SQLite file from disk.
If you just want to delete some things then delete the managed objects from the context and save the context (and persistent store).