on simulator viewDidLoad was called each time, on the device the view is loaded once and only viewWillAppear is called.
the widget does not receive core data changes notifications
do not call NCWidgetController.widgetController().setHasContent from widgetPerformUpdateWithCompletionHandler. The best place to use it (mostly) is your containing app, not the widget itself.