Swift - Basic query regarding managedObjectContext method invocation from app delegate
Swift - Basic query regarding managedObjectContext method invocation from app delegate
- Subject: Swift - Basic query regarding managedObjectContext method invocation from app delegate
- From: Devarshi Kulshreshtha <email@hidden>
- Date: Tue, 14 Oct 2014 18:12:05 +0530
I am trying to implement reset functionality in core data based sample app.
I think that there are two ways to implement reset functionality:
Approach 1: Delete sqlite file and then re-insert data
Approach 2: Retrieve all data in managedObjectContext, delete
retrieved data and then re-insert data
I tried 'Approach 1' first, here is the code snippet:
@IBAction func resetData(sender: AnyObject) {
let appDelegate = UIApplication.sharedApplication().delegate
as AppDelegate
// delete old db if it exists
var url =
appDelegate.applicationDocumentsDirectory.URLByAppendingPathComponent("MyApp.sqlite")
let defaultFileManager = NSFileManager.defaultManager()
if defaultFileManager.fileExistsAtPath(url.path!) {
defaultFileManager.removeItemAtURL(url, error: nil)
}
let managedObjectContext = appDelegate.managedObjectContext!
var menuCategory : MenuCategories =
NSEntityDescription.insertNewObjectForEntityForName("MenuCategories",
inManagedObjectContext: managedObjectContext) as MenuCategories
appDelegate.saveContext()
}
Then I added a break point in appDelegate's managedObjectContext lazy
initialization method, here is the related code snippet:
lazy var managedObjectContext: NSManagedObjectContext? = {
let coordinator = self.persistentStoreCoordinator
if coordinator == nil {
return nil
}
var managedObjectContext = NSManagedObjectContext()
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
}()
First time when I performed reset action, the program counter (PC)
stopped on the added break point, but next time when I performed reset
action then the PC did not stop on the break point and app crashed for
obvious reasons:
Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn’t be
completed. (Cocoa error 4.)" UserInfo=0x78f54ff0
{NSUnderlyingError=0x78f69250 "The operation couldn’t be completed. No
such file or directory"
Now my question is -
Why second time managedObjectContext initialization method was not invoked?
I know that I need to go back and learn Swift basics - the hard way,
perhaps there is some obvious reasons which I am missing, please
suggest.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden