/** * Saves any unsaved changes in this context and it's Managed Objects into the Persistent Store * * @see MManagedObjectContext::hasChanges() * * @return bool Whether or not the save was successful */ public function save() { if ($this->hasChanges()) { $saveRequest = new MSaveRequest($this); $insertedObjects = new MMutableArray(); $updatedObjects = new MMutableArray(); foreach ($this->managedObjects()->toArray() as $object) { if ($object->hasChanges()) { if ($object->objectID() == MManagedObject::UNKNOWN_ID) { $insertedObjects->addObject($object); } else { $updatedObjects->addObject($object); } } } $saveRequest->setInsertManagedObjects($insertedObjects); $saveRequest->setUpdateManagedObjects($updatedObjects); $saveRequest->setDeleteManagedObjects($this->deletedObjects()); $affectedObjects = $this->persistentStoreCoordinator()->executeRequest($saveRequest); foreach ($affectedObjects->toArray() as $object) { if (!$this->deletedObjects->removeObject($object)) { $object->persistChanges(); } } return true; } else { return false; } }