Я программирую приложение на swift, и когда я запускаю тестовое приложение на симуляторе iPhone, все работает, но затем я пытаюсь провести пальцем вправо, что является жестом, который я добавил для перехода на следующую страницу (View Controller Two) он падает и показывает этот отчет об ошибке в журнале консоли.
2014-10-18 12:07:34.400 soundtest[17081:818922] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<soundtest.ViewControllerTwo 0x7f92f1f20090> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key sfdfa.'
*** First throw call stack:
(
0 CoreFoundation 0x00000001067813f5 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x00000001082afbb7 objc_exception_throw + 45
2 CoreFoundation 0x0000000106781039 -[NSException raise] + 9
3 Foundation 0x0000000106b984d3 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 259
4 CoreFoundation 0x00000001066cb400 -[NSArray makeObjectsPerformSelector:] + 224
5 UIKit 0x00000001072ce97d -[UINib instantiateWithOwner:options:] + 1506
6 UIKit 0x000000010712f698 -[UIViewController _loadViewFromNibNamed:bundle:] + 242
7 UIKit 0x000000010712fc88 -[UIViewController loadView] + 109
8 UIKit 0x000000010712fef9 -[UIViewController loadViewIfRequired] + 75
9 UIKit 0x000000010713038e -[UIViewController view] + 27
10 UIKit 0x00000001076cd83f -[_UIFullscreenPresentationController _setPresentedViewController:] + 65
11 UIKit 0x000000010710bc49 -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 105
12 UIKit 0x000000010713c121 -[UIViewController _presentViewController:withAnimationController:completion:] + 1746
13 UIKit 0x000000010713e461 __62-[UIViewController presentViewController:animated:completion:]_block_invoke + 132
14 UIKit 0x000000010713e385 -[UIViewController presentViewController:animated:completion:] + 229
15 UIKit 0x00000001073bb9d6 _UIGestureRecognizerSendActions + 262
16 UIKit 0x00000001073ba679 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 532
17 UIKit 0x00000001073bf296 ___UIGestureRecognizerUpdate_block_invoke662 + 51
18 UIKit 0x00000001073bf192 _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 254
19 UIKit 0x00000001073b520d _UIGestureRecognizerUpdate + 2796
20 UIKit 0x00000001070520a6 -[UIWindow _sendGesturesForEvent:] + 1041
21 UIKit 0x0000000107052cd3 -[UIWindow sendEvent:] + 667
22 UIKit 0x000000010701fae1 -[UIApplication sendEvent:] + 246
23 UIKit 0x000000010702cbad _UIApplicationHandleEventFromQueueEvent + 17370
24 UIKit 0x0000000107008233 _UIApplicationHandleEventQueue + 1961
25 CoreFoundation 0x00000001066b6ad1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
26 CoreFoundation 0x00000001066ac99d __CFRunLoopDoSources0 + 269
27 CoreFoundation 0x00000001066abfd4 __CFRunLoopRun + 868
28 CoreFoundation 0x00000001066aba06 CFRunLoopRunSpecific + 470
29 GraphicsServices 0x000000010a1699f0 GSEventRunModal + 161
30 UIKit 0x000000010700b550 UIApplicationMain + 1282
31 soundtest 0x000000010624503e top_level_code + 78
32 soundtest 0x000000010624507a main + 42
33 libdyld.dylib 0x000000010ae4a145 start + 1
34 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
cmmd + F
чтобы вы могли искать внутри консоли и искать завершающее приложение из-за необработанного исключения , ровно через 1 строку вы увидите причину: которая сообщает вам причину сбоя вашего приложения. (да, у меня была эта ошибка слишком много раз :)Ответы:
CMYR - «это также может произойти, если вы подключили кнопку к IBAction, который больше не существует (или был переименован)»
Если вы столкнулись с этой проблемой, убедитесь, что вы идете на Main.storyboard, ВПРАВО щелкните по значку желтого поля (просмотр контроллера) в верхней части контура телефона и УДАЛИТЕ розетку (и) с желтыми флагами.
В таких случаях вы, вероятно, назвали действие, а затем переименовали его. Вам нужно удалить старое имя, и если это была единственная проблема, она запустится прямо в симе!
источник
Вы случайно установили переменную OS_ACTIVITY_MODE? Чтобы проверить, установлена ли у вас эта переменная (и отключена ли она), в Xcode 9 сделайте следующее:
Select from Xcode menu Product -> Scheme -> Edit Scheme.. Select the Run scheme and look under Arguments. If you see the OS_ACTIVITY_MODE variable checked, deselect it
источник
В Xcode 9 и Swift 4:
Напечатайте стек исключений, чтобы узнать причину исключения:
Добавить (+) Добавить исключительную точку останова.
Выберите новую точку останова, Control-Click, Изменить точку останова.
источник
В моем случае я вызывал метод делегата, но метод не был объявлен.
Эта ошибка является общей и может появиться по ряду причин. Убедитесь, что вы не отключили свои журналы, чтобы увидеть, что на самом деле произошло. Включите OS_ACTIVITY_MODE в схемах, если вы отключили его. Вы могли бы отключить его, чтобы предотвратить много ненужных журналов, но они удобны.
Вы также можете отследить причину более подробно, добавив точку останова исключения
po $arg1
. Как уже упоминалось Ахмед-ЛотфиВот общий контрольный список, который вы можете пройти.
источник
Другие решения не сработали, вот мое. Это относится только к Xcode 8 при работе в старом режиме Swift 2.3 :
Похоже, Интерфейсный Разработчик пытается переименовать метод, который должен быть подключен к кнопке.
Вот радар с более подробной информацией.
Решение (обходной путь) - вручную заменить имя параметра метода на
_
:Изменить на это:
источник
Также может быть неверно имя идентификатора Segue. Например -
источник
Моя ситуация была немного другой, я пытался перейти в a
UINavigationController
, и что исправило это для меня, так это получение основной части очереди.Для Objective-C:
Для Swift 3:
источник
Это начало происходить для меня на Xcode 7, и у меня не было розеток с желтыми флагами, которые я мог бы удалить.
Единственное, что сработало для меня, это замена этой строки в AppDelegate:
чтобы:
источник
Для меня проблема была в моем IBAction с UIButton.
Когда вы нажимаете Ctrl + Drag, чтобы создать IBAction из UIButton, обязательно выберите «UIButton» в раскрывающемся списке «Тип». Выбор по умолчанию AnyObject приводит к сбою приложения при нажатии на кнопку UIB.
источник
Это также могут быть сломанные триггерные сегменты, проверьте раскадровку, как только вы снова подключите сегменты или розетку, все должно снова заработать.
Убедитесь, что
Identifier
из Segue правильно и похоже на ваш код .источник
Я столкнулся с этой проблемой, когда я изменил имя переменной, которая подключена к одной из моих кнопок. Так что имейте это в виду!
источник
Я новичок в Xcode, поэтому мне понадобилось несколько часов, чтобы выяснить проблему, чтобы загрузить файл XLS. Я проследил большинство примеров кода там, и ни один из них не решает код ошибки, показанный на рисунке.
Решение, которое я нашел, заключалось в том, что нам нужно указать «Добавить к целям»: отметьте проект для добавления, когда мы импортируем файл xls в Xcode, перетаскивая его в «Проект» -> «Вспомогательные файлы».
источник
может быть более 1 IBAction для кнопки в вашем контроллере представления, попробуйте найти их и удалить все предыдущие элементы для этой кнопки в вашем контроллере и создать новую кнопку. Это решит вашу проблему.
источник
Убедитесь, что вы динамически не применяете относительные ограничения к представлению, которого еще нет в иерархии представлений.
В приведенном выше примере bottomView стал частью иерархии представления перед применением относительных ограничений к нему.
источник
Я получил эту ошибку следующими 2 способами:
Я получал эту ошибку, когда я вставлял в другой UIViewController.
ОДНАКО по ошибке я переклассифицировал другой класс
UITabBarController
и получал эту ошибку.Как я это исправил? Я из подкласса
UIViewController
и больше не рухнул :)Я не хотел использовать раскадровку. Поэтому я удалил это. Еще я забыл удалить его ссылку в настройках проекта . Я просто нажал на проект >> Общие >> Информация о развертывании >>, а затем я установил Главный интерфейс на черное пространство. (Ранее было установлено, чтобы основной)
Как вы можете видеть в обеих ситуациях, вы получаете ошибку при доступе к некоторому объекту, который существует ...
источник
Я собираюсь добавить мою проблему в список возможных решений на случай, если кто-нибудь еще встретится в этой теме.
Идентификатор ячейки TableView. Прежде всего убедитесь, что ваша ячейка имеет идентификатор. Во-вторых, убедитесь, что вы ссылаетесь на этот идентификатор при удалении из ячейки.
источник
Свифт 4 :
Я получил эту ошибку из-за изменения в API UIVisualEffectView. В Swift 3 было нормально сделать это:
myVisuallEffectView.addSubview(someSubview)
Но в Swift 4 мне пришлось изменить это на следующее:
myVisualEffectView.contentView.addSubview(someSubview)
источник
У меня была такая же ошибка, когда у меня была опечатка для одного из представлений при построении ограничений с использованием визуального форматера. Я надеюсь, что это поможет кому-то ... или мне снова однажды.
источник
Если вы используете реагировать с собственным и реагировать на собственный firebase, убедитесь, что вы связали файл Google-Services.plist ( https://github.com/invertase/react-native-firebase/issues/313#issuecomment-320435560 )
источник
В моем случае это был UIAlertView на iPad: UIAlertController является Crashed (iPad) . Я не настраивал sourceView и sourceRect.
источник
Для моего случая, Xcode 8.2.1 , у меня был Map Kit View в контроллере представления. Итак, я пошел в
и добавил
MapKit.framework
, тогда все было хорошо.Я думаю, что это также будет относиться к другим взглядам, которые требуют основы.
PS Запуск на iOS 9 сказал мне, что была проблема с Map Kit View, а на iOS 10 ничего не сказал!
источник
У меня работало только решение "drop armageddon":
источник
В моем случае это был XCode, который устал и не запускал приложение с этим сообщением из-за сбоя утверждения (которое было установлено нашим кодом).
Запуск на другом устройстве показал ошибку подтверждения, которую мы смогли исправить, и все вернулось на круги своя.
источник
Для Swift 2.3
Это похоже на ошибку в Xcode 8 и Swift 2.3, если вы подключаете действие кнопки к своему коду через раскадровку, убедитесь, что Xcode не переименовал действие, для меня это добавление withSender: в конце методов Итак, я собираюсь перейти к своему коду и переименовать метод в соответствии с написанным Xcode.
Для любой другой версии проверьте правильный ответ.
источник
В моем случае это был InterfaceBuilder. Я скопировал некоторые виды из другого ViewController, который испортил ограничения.
В InterfaceBuilder у меня была ошибка красной стрелки на ViewController.
Во время выполнения приложение упало.
источник
В моем случае приложение упало, потому что я не установил целевое членство в раскадровке.
источник
В моем случае проект
Build Settings
содержал несколько несуществующих каталогов дляFramework Search Paths
иLibrary Search Paths
.источник
У меня было две проблемы:
1) У моей цели не было контроллера просмотра, который использовался в файле раскадровки.
2) Моей раскадровке было около 3 лет, мне пришлось заново создать один из контроллеров представления в контроллере панели вкладок (на нем был только UITextField, и я до сих пор не знаю, почему он не работал)
источник
Еще одна возможная причина:
В моем случае у меня
xib
был звонок, иBundle.main.loadNibNamed(...
в этот момент он падал. Все по моемуIBOutlets
иIBActions
вроде нормально. В конце я заметил, что наnib
самом деле загружается, но когда я попытался получить доступ к первому (и единственному) представлению (nib.first
), это не сработало. На самом делеnib.count
возвращалось очень большое целое число (max int?) Вместо ожидаемого1
. Я попытался повторно добавить представление, но все равно не повезло.В итоге я удалил весь
xib
файл и начал заново (но я сохранил некоторые представления в своем буфере обмена, чтобы я мог вставить их вместо того, чтобы заново создавать их).Это сработало!
источник
Это может произойти, если у вас есть таблица и вы забыли назначить классу UITableViewDelegate и UITableViewDataSource
источник