Walter West
Walter West

Reputation: 859

How to update Objects in core date through NSManagedObjectContext in swift?

I get objects array from core data:

lazy var managedObjectContext : NSManagedObjectContext? = {
        let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
        if let managedObjectContext = appDelegate.managedObjectContext {
            return managedObjectContext
        }
        else {
            return nil}
        }()
var tests=[Test]()
func fetchLog() {
        let fetchRequest = NSFetchRequest(entityName: "Test")
        if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [Test] {
            tests = fetchResults
        }

And then tray to update it:

 managedObjectContext?.updatedObjects(tests[atRow] as NSManagedObject)

But get error: '(NSManagedObject) -> $T5' is not identical to 'NSSet'

Whats wrong?

Upvotes: 0

Views: 882

Answers (1)

bluedome
bluedome

Reputation: 2459

NSManagedObject is registered with NSManagedObjectContext(MOC). To update it, call MOC's save().

like this:

let aTest = test[atRow] as Test
// update through properties like aTest.id = 2
...

// and save
var error: NSError?
if managedObjectContext!.save(&error) {
    println("saved successfully")
} else {
    println("failed to save")
    if let saveError = error {
        println("error=\(saveError.localizedDescription)")
    }
}

Upvotes: 1

Related Questions