The observer is added without context, therefore notification fires more than once. In init, addObserver code should read:
center.addObserver(self, selector: #selector(MSZContextWatcher.contextUpdated(_:)), name: NSManagedObjectContextDidSaveNotification, object: context)
The last paramater object: is nil in the original code.