I'm currently working on an iOS app. I save some datas in NSManageObjectContext. During the current session, the datas are accessible in the model but, when I relaunch the app datas are not present anymore.
In my AppDelegate.swift :
private lazy var _managedObjectModel: NSManagedObjectModel? = {
if let modelURL = NSBundle.mainBundle().URLForResource("Model", withExtension: "momd") {
return NSManagedObjectModel(contentsOfURL: modelURL)
} else {
return nil
}
}()
private lazy var _persistentStoreCoordinator: NSPersistentStoreCoordinator? = {
if let managedObjectModel = self._managedObjectModel {
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
if let url = self._applicationDocumentsDirectory?.URLByAppendingPathComponent("my.sqlite") {
var error: NSError?
coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error)
if let error = error {
ErrorManager.defaultManager().showFatalError(title: "Error: Core Data", message: Constants.LocalizedDownloadItAgain)
} else {
return coordinator
}
}
}
return nil
}()
lazy var managedObjectContext: NSManagedObjectContext? = {
let managedObjectContext = NSManagedObjectContext()
if let coordinator = self._persistentStoreCoordinator {
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
} else {
return nil
}
}()
And in my CustomClass when I Store Data :
private init() {
var error: NSError?
let request = NSFetchRequest(entityName: "BackingTracks")
request.sortDescriptors = [NSSortDescriptor(key: "position", ascending: true)]
if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
if let managedObjectContext = appDelegate.managedObjectContext {
if let backingTracks = managedObjectContext.executeFetchRequest(request, error: &error) as? [BackingTrack] {
if error == nil {
if backingTracks.count == 0 {
let object = NSEntityDescription.insertNewObjectForEntityForName("BackingTracks", inManagedObjectContext: managedObjectContext) as? BackingTrack
object?.name = "test"
object?.code = "test"
object?.data = nil
}
} else {
ErrorManager.defaultManager().showFatalError(title: "Error: Core Data", message: error!.localizedFailureReason)
}
}
}
}
}
But the variable backingTracks
backingTracks = managedObjectContext.executeFetchRequest(request, error: &error)
is always empty when I relaunch the App.
Do you have any Idea ?
Aucun commentaire:
Enregistrer un commentaire