Вот твой prepare
метод ...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToPreferences" {
let destinationVC = segue.destination as! ExchangePreferencesVC
destinationVC.delegate = self
}
}
Посмотрите, что произойдет, если идентификатор segue не совпадает точно goToPreferences
. Передача все еще будет происходить, но делегат не будет установлен. Так что проверьте свой идентификатор segue, а также добавьте некоторый код для обработки случая, когда вы не узнаете идентификатор. По крайней мере, вы должны записать сообщение, чтобы вам было легче обнаружить проблему.
Оказывается, это невозможно из-за загрузчика классов. Иерархия загрузчика классов выглядит следующим образом:
Загрузчик классов приложения -> Загрузчик классов Ejb -> Загрузчик классов войны
Чтобы иметь отдельный журнал для отдельной войны, можно поместить log4j.jar в войну и позволить log4j использовать загрузчик классов войны. Но так как app1-ejb.jar и app2-ebj.jar также должны использовать log4j, log4j.jar можно разместить только на верхнем уровне. Таким образом, log4j находится на уровне загрузчика классов приложений.
Я могу указать одну конфигурацию log4j для записи разных пакетов в разные файлы. Но для общей библиотеки, такой как spring, журнал не может быть отделен.
Это также можно сделать, динамически изменив свойство FILE в файле свойств с помощью PropertyConfigurator в коде.
Причина, по которой он не работал, потому что log4j присутствует в корневом местоположении, вместо этого пусть каждая война имеет Log4j.jar в своем каталоге WEB-INF / lib и удалите log4j.jar из корень.
Для получения дополнительной информации см. Статью об этом в моем блоге. http://techcrawler.wordpress.com/