UIApplication.sharedПриложение недоступно

Я пытаюсь получить ссылку на мой делегат приложения из UIViewController, но я продолжаю получать это сообщение об ошибке:

«sharedApplication ()» недоступен: вместо этого используйте решения на основе контроллера представления, где это уместно.

Я читал все статьи, посвященные такого рода сообщениям, но моя проблема кажется не связанной, поскольку я не использую какую-либо стороннюю структуру. Хотя расширение Today является частью моего приложения, класс, в котором возникает ошибка, совершенно не связан с ним. Я даже создал совершенно новый класс и продолжаю получать ту же ошибку:

http://  i.stack.imgur.com/mp2qs.png Когда я делаю то же самое на игровой площадке, все работает нормально. Что мне не хватает?


person DoertyDoerk    schedule 11.12.2015    source источник
comment
Это расширение приложения или стандартное приложение? Содержит ли ваше приложение расширения приложений?   -  person Paulw11    schedule 11.12.2015
comment
Ошибка возникает в самом приложении. У приложения есть расширение, но я пытаюсь получить appDel из приложения, а не из расширения. Все классы, в которых возникает ошибка, не имеют очевидной связи с расширением.   -  person DoertyDoerk    schedule 11.12.2015
comment
Убедитесь, что файл, выдающий ошибку, не был связан с целью расширения по ошибке — см. «Общее приложение uiapplication недоступно»> stackoverflow.com/questions/32609776/   -  person Paulw11    schedule 11.12.2015
comment
Я сделал. Как исходный файл, так и вновь созданный тестовый класс связаны только с основным приложением, но не с расширением.   -  person DoertyDoerk    schedule 11.12.2015
comment
Хм. Ну, по какой-то причине Xcode считает, что этот класс связан с расширением вашего приложения, поэтому он выдает эту ошибку.   -  person Paulw11    schedule 11.12.2015
comment
Да и не знаю, где еще проверить. Может ли это быть в настройках схемы или сборки? Любая подсказка приветствуется.   -  person DoertyDoerk    schedule 11.12.2015
comment
@MuhammadWaqasBhati: Пожалуйста, не добавляйте шум вроде «Спасибо» за вопросы.   -  person Cerbrus    schedule 11.12.2015
comment
Вы пытались очистить свой проект и/или перезапустить Xcode? Xcode иногда немного теряется...   -  person jcaron    schedule 11.12.2015
comment
Да. Тот же результат.   -  person DoertyDoerk    schedule 11.12.2015
comment
Подробности понимания см. по этой ссылке общее приложение недоступно недоступно в расширении приложения ios"> stackoverflow.com/questions/32031071/   -  person Ashish    schedule 04.05.2018


Ответы (4)


Проблема решена. Я снова зашел в настройки сборки своего приложения и наткнулся на

Require Only AppExtension-Safe API

все установлено на ДА. Однако по умолчанию НЕТ. Когда я установил это в NO, ошибка исчезла.

Я точно не помню, чтобы когда-либо касался или даже знал об этом, но, к счастью, теперь это работает.

person DoertyDoerk    schedule 11.12.2015
comment
Ошибка устранена, но представление общего доступа по умолчанию отсутствует. - person Deepak Saki; 07.02.2017
comment
Работает! Была такая же проблема с некоторыми какао-бобами. Мне пришлось изменить его для соответствующей цели в проекте модуля, чтобы исправить это. Потребовалось некоторое время, пока я не понял это, так как я впервые попытался применить его только к своим целям сборки. - person Andy; 29.06.2017
comment
Привет, у меня такая же проблема, но она не смогла решить проблему даже после применения вашего решения. - person Anita; 13.07.2017
comment
У меня уже есть проект, у меня есть требование добавить расширение, я следую процессу, как указано в другом учебнике, но мне нужен собственный макет, когда кто-то хочет поделиться изображением, используя расширение моего приложения, поэтому, когда я использую класс, который мне нужно включить когда пользователь нажимает для обмена, содержит экземпляр appdelegate n, у меня возникает вышеупомянутая проблема. Не могли бы вы дать мне какую-нибудь линию гильдии, чтобы решить проблему - person Anita; 13.07.2017
comment
Магазин Apple, вероятно, отклонит ваше приложение, если у вас есть расширение приложения и установлено требование No. - person Garviel; 25.07.2018
comment
В моем случае мне пришлось вместо этого удалить контроллер представления из списка источников цели расширения. Расширение должно иметь этот флаг в YES. Но мой файл не предназначен для этой цели. - person Sai Manoj Kumar Yadlapati; 12.03.2020
comment
хорошая работа, вы меня спасли, я добавил oneSignalNotificationServiceExtension, и все модули генерируют эту ошибку - person Sohaib Siddique; 25.12.2020

Я столкнулся с той же ошибкой, когда создал и добавил новую цель в свой проект (цель уведомления удаленной службы) и неправильно добавил определение цели в свой подфайл.

Я следовал указаниям сторонней платформы уведомлений, и им было неясно, где разместить целевое определение. Сначала я добавил определение цели в свою основную цель, как и определение цели Tests. Эта ошибка привела меня к этой ошибке.

В итоге я переместил определение цели уведомления удаленной службы за пределы моей основной цели в нижнюю часть моего подфайла, и это решило мою проблему.

person drquiz    schedule 19.08.2019
comment
у меня то же самое происходит. Сторонней платформой уведомлений, о которой идет речь, была OneSignal. - person Cory McAboy; 12.12.2019

На случай, если кто-то столкнулся с этой ошибкой через 3 года после вопроса. Убедитесь, что членство в целевом файле Swift не включает расширение «Сегодня».

person Mohamed ElBasyouni    schedule 23.02.2019

В моем случае я не определил import Foundation в файле, вызвавшем ошибку. глупо и поздно, но может помочь рассеянному, как я. Ваше здоровье.

person Ahsan    schedule 05.06.2021
comment
Не правда. Вы можете видеть в вопросе OP, что они уже импортируют UIKit, который сам импортирует Foundation. Вам не нужно вручную импортировать Foundation, когда вы уже импортируете UIKit, и это в любом случае не решит проблему OP, потому что это не связано с Foundation. - person Eric Aya; 05.06.2021