I have preloaded data from a .csv file into coredata. I am fetching the data in the following way
var places:[Places] = []
in viewDi
Your current code is:
if let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext {
let place : Places = Places()
place.isFavourite = cell.isFavouriteLabel.text
do{
try managedObjectContext.save()
} catch let error as NSError{
print(error)
}
}
That would create a new place (if it worked), but you need to update an existing one.
You have the places
returned from managedObjectContext.executeFetchRequest
.
So you need to get something like places[index_of_the_cell_in_question].isFavourite = cell.isFavouriteLabel.text
and then managedObjectContext.save()
.
Use the save
function of the NSManagedObjectContext:
places.isFavourite = cell.isFavoriteLabel.text
var error: NSError?
if managedObjectContext.save(&error) != true {
// Error
}
This is simple as this:
Find the entry you want to modify in places
then save the core data context.
func saveContext () {
if let moc = self.managedObjectContext {
var error: NSError? = nil
if moc.hasChanges && !moc.save(&error) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
println("Unresolved error \(error), \(error!.userInfo)")
abort()
}
}
}
I suggest you used a manager to insert, fetch and delete entry in your core data.
import Foundation
import CoreData
class CoreDataHelper: NSObject {
class var shareInstance:CoreDataHelper {
struct Static {
static let instance:CoreDataHelper = CoreDataHelper()
}
return Static.instance
}
//MARK: - Insert -
func insertEntityForName(entityName:String) -> AnyObject {
return NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext: self.managedObjectContext!)
}
//MARK: - Fetch -
func fetchEntitiesForName(entityName:String) -> NSArray {
...
}
//MARK: - Delete -
func deleteObject(object:NSManagedObject) {
self.managedObjectContext!.deleteObject(object)
}
// MARK: - Core Data Saving support -
func saveContext () {
if let moc = self.managedObjectContext {
var error: NSError? = nil
if moc.hasChanges && !moc.save(&error) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
println("Unresolved error \(error), \(error!.userInfo)")
abort()
}
}
}
Hop this can help you