A better way would be to create a new NSManagedObjectContext
with "main queue" concurrency type and in it perform all changes to your newly created or existing items (edit existing by importing them to the new context).
This way your main context could still save changes on it without committing along with the changes the new object that is only partially populated.
And, you could discard all changes by simply discarding the new context without saving it.
The context could be a child of the main context or report changes via notifications.