libc++abi.dylib: завершение с неперехваченным исключением типа NSException (lldb)
я программирую приложение в 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)
29 ответов:
CMYR - " его также может произойти, если вы подключили кнопку К IBAction, которая больше не существует (или была переименована)"
Если вы столкнулись с этой проблемой, убедитесь, что вы идете на главную.раскадровка, щелкните правой кнопкой мыши на значке желтого поля (контроллер вида) в верхней части контура телефона и удалите розетку(ы) с желтыми флагами.
Что происходит в таких случаях, как это, вы, вероятно, назвали действие, а затем переименовали его. Вам нужно удалить старое имя и если это была единственная проблема, она начнется прямо в sim!
вы случайно не установили переменную 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 8 при работе в Swift 2.3 режим legacy:
похоже, что Interface Builder пытается переименовать метод, который должен быть подключен к кнопке.
вот радар С более подробной информацией.
решение (обходной путь) состоит в том, чтобы вручную заменить имя параметра метода на
_:@IBAction func editPictureTapped(sender: UIButton) { // not working print("Tapped") }изменить для этого:
@IBAction func editPictureTapped(_: UIButton) { // working OK print("Tapped") }
это также может быть неправильное имя идентификатора Segue. Например -
performSegueWithIdentifier("wrongSegueName", sender: self)
Это начало происходить для меня на Xcode 7, и у меня не было выходов с желтыми флагами, которые я мог бы удалить.
единственное, что сработало для меня, это замена этой строки в AppDelegate:
[window addSubview:viewController.view];to:
[window setRootViewController:viewController];
моя ситуация была немного другой, я пытался поговорить с
UINavigationController, и то, что исправило это для меня, получало основную часть очереди.Для Цели-C:
dispatch_async(dispatch_get_main_queue(), ^{ [self performSegueWithIdentifier:@"SegueName" sender:self]; });Для Swift 3:
DispatchQueue.main.async { [weak self] in self?.performSegue(withIdentifier: "SegueName", sender: self) }
в Xcode 9 и Swift 4:
печать стека исключений, чтобы узнать причину исключения:
- перейти к показу навигатора точки останова.
Добавить ( + ) Добавить Точку Останова Исключения.
выберите новую точку останова, Нажмите кнопку управления, измените точку останова.
- добавить действие и ввести: po $arg1
Я столкнулся с этой проблемой, когда я изменил имя переменной, которая подключена к одной из моих кнопок. Так что имейте это в виду!
Я новичок в Xcode, поэтому мне потребовалось несколько часов, чтобы выяснить проблему, чтобы загрузить файл xls. Я проследил за большинством примеров кодов там, и ни один из них не решает ошибку Xcode, показанную.
решение, которое я нашел, состояло в том, что нам нужно указать "добавить к целям:" отметьте проект для добавления, когда мы импортируем файл xls в Xcode путем перетаскивания в Project -> Supporting Files.
там может быть больше, чем 1 IBAction для кнопки в вашем контроллере просмотра попробуйте найти их и удалить все предыдущие элементы для этой кнопки в контроллере и создать новую кнопку .это решит вашу проблему.
убедитесь, что вы не применяете динамически относительные ограничения к представлению, которого еще нет в иерархии представлений.
UIView *bottomView = [[UIView alloc] initWithFrame:CGRectZero]; [self.view addSubview:bottomView]; bottomConstraint = [NSLayoutConstraint constraintWithItem:bottomView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; bottomConstraint.active = YES;в приведенном выше примере, bottomView стало частью иерархии представления перед применением относительных ограничений на это.
Я получил эту ошибку в следующих 2 способов:
Я получал эту ошибку, когда я толкал в другой UIViewController.
однако по ошибке я подкласс другого класса из
UITabBarControllerи получал эту ошибку.Как я его починил? Я подкласс от
UIViewControllerи я больше не сбой :)
Я не хотел использовать раскадровку. Поэтому я удалил его. Но я забыл удалить его ссылку в проекте настройки. Я просто нажал на проект > > общие > > информация о развертывании>>, а затем я установил основной интерфейс в черное пространство. (Ранее было установлено значение main)
Как вы можете видеть для обеих ситуаций вы получаете сообщение об ошибке для доступа к некоторому объекту, который существует...
Я собираюсь добавить свою проблему в список возможных решений в случае, если кто-то еще произойдет в этой теме.
идентификатор ячейки TableView. Прежде всего убедитесь, что ваша ячейка имеет идентификатор. Во-вторых, убедитесь, что вы ссылаетесь на этот идентификатор при удалении ячейки из очереди.
Swift 4:
Я получал эту ошибку из-за изменения в api UIVisualEffectView. В Swift 3 это было нормально сделать:
myVisuallEffectView.addSubview(someSubview)но в Swift 4 мне пришлось изменить его на этот:
myVisualEffectView.contentView.addSubview(someSubview)
У меня была такая же ошибка, когда у меня была опечатка для одного из представлений при создании ограничений с помощью визуального форматирования. Надеюсь, это кому-то поможет... или я снова однажды.
Это также может быть полезно для создания Точка Останова Исключения в Debug - >точки останова. Затем отладчик должен, надеюсь, остановиться на строке кода, где находится проблема.
в моем случае это был UIAlertView на iPad: UIAlertController разбился (iPad). Я не настраивал sourceView и sourceRect.
для моего случая, Xcode 8.2.1, Я Map Kit View в контроллере представления. Поэтому я пошел в
Построить Фазы > Связать Двоичный Файл С Библиотеками
и добавил
MapKit.framework, тогда все было нормально.Я думаю, что это также будет применяться к другим мнениям, которые требуют рамок.
С. П., работающих на iOS 9 мне сказали, что там был вопрос о карте вида комплект, в то время как на iOS 10 мне ничего не сказал!
только" падение Армагеддон " решение работало для меня:
- удалить приложение с устройства
- очистить проект
- запустить новую установку на устройстве
в моем случае это был Xcode, который устал и не смог запустить приложение с этим сообщением из-за сбоя утверждения (который был установлен нашим кодом).
запуск на другом устройстве показал сбой утверждения, который мы смогли исправить, и все вернулось в норму.
Для Swift 2.3
Это похоже на ошибку с Xcode 8 и Swift 2.3, если вы подключаете Действие кнопки к своему коду через раскадровку, убедитесь, что Xcode не переименовал действие, для меня это добавление withSender: в конце методов, так что я собираюсь мой код и переименование метода, чтобы соответствовать одному Xcode написал.
для любой другой версии проверьте правильный ответ.
в моем случае, это был InterfaceBuilder. Я скопировал некоторые представления из другого ViewController, который испортил ограничения.
в InterfaceBuilder у меня была ошибка красной стрелки на ViewController.
во время выполнения приложение разбился.
В моем случае проект
Build Settingsсодержит некоторые несуществующие каталоги дляFramework Search PathsиLibrary Search Paths.
в моем случае, если вы используете
UITableViewНе забудьте добавить UITableViewDelegate и UITableViewDataSource рядом с viewcontroller, как это.class MenuController: UIViewController, UITableViewDelegate, UITableViewDataSourceпри преобразовании старых проектов (написанных на Swift 2.3) в Swift 3 Необходимо добавить эти ключевые слова.
У меня два вопроса:
1) у моей цели не было контроллера вида, который использовался в файле раскадровки.
2) моей раскадровке было около 3 лет, мне пришлось воссоздать один из контроллеров вида в контроллере панели вкладок с нуля (у него был только UITextField, и я до сих пор не знаю, почему он не работал)
еще одна возможная причина:
в моем случае, у меня было
xibи позвонилBundle.main.loadNibNamed(...в этот момент он был сбой. Все моиIBOutletsиIBActionsказалось, все в порядке. В конце концов я заметил, чтоnibфактически загружался, но затем, когда я попытался получить доступ к первому (и только) виду (nib.first), что не работает. На самом делеnib.countвозвращалось очень большое целое число (max int?), вместо ожидаемого1. Я попытался повторно добавить представление, но все равно нет удача.в конце концов, я удалил весь
xibфайл и начал снова (но я сохранил некоторые из представлений в своем буфере обмена, чтобы я мог вставить их вместо того, чтобы воссоздавать их снова).это работает!




Comments