Ich programmiere eine App schnell und wenn ich die Test-App auf dem iPhone-Simulator starte, funktioniert alles, aber dann versuche ich, nach rechts zu wischen. Dies ist eine Geste, die ich hinzugefügt habe, um zur nächsten Seite zu gelangen (View Controller Two). Es stürzt ab und zeigt diesen Fehlerbericht im Konsolenprotokoll an.
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
so dass Sie innerhalb Konsole und die Suche nach suchen können Terminating app aufgrund nicht abgefangene Ausnahme , genau 1 Zeile nach , dass Sie sehen Grund: die Sie den Grund Ihrer App abgestürzt erzählt. (Ja, ich hatte diesen Fehler zu oft :)Antworten:
CMYR - "Dies kann auch passieren, wenn Sie eine Schaltfläche mit einer IBAction verbunden haben, die nicht mehr existiert (oder umbenannt wurde)."
Wenn Sie auf dieses Problem stoßen, stellen Sie sicher, dass Sie zu Main.storyboard gehen, klicken Sie mit der rechten Maustaste auf das gelbe Feldsymbol (View Controller) oben in der Telefonkontur und löschen Sie die Steckdose (n) mit gelben Flaggen.
In solchen Fällen haben Sie wahrscheinlich eine Aktion benannt und dann umbenannt. Sie müssen den alten Namen löschen und wenn dies das einzige Problem war, wird es sofort in sim gestartet!
quelle
Haben Sie zufällig die Variable OS_ACTIVITY_MODE festgelegt? Gehen Sie in Xcode 9 wie folgt vor, um zu überprüfen, ob Sie diese Variable festgelegt (und deaktiviert) haben:
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
quelle
In Xcode 9 und Swift 4:
Drucken Sie den Ausnahmestapel, um den Grund der Ausnahme zu ermitteln:
Hinzufügen (+) Ausnahme-Haltepunkt hinzufügen.
Wählen Sie den neuen Haltepunkt aus, klicken Sie bei gedrückter Ctrl-Taste auf Haltepunkt bearbeiten.
quelle
In meinem Fall habe ich eine Delegate-Methode aufgerufen, aber die Methode wurde nicht deklariert.
Dieser Fehler ist allgemein und kann aus verschiedenen Gründen auftreten. Stellen Sie sicher, dass Sie Ihre Protokolle nicht deaktiviert haben, um zu sehen, was tatsächlich passiert ist. Aktivieren Sie OS_ACTIVITY_MODE in den Schemata, wenn Sie es deaktiviert haben. Sie haben es möglicherweise deaktiviert, um viele irrelevante Protokolle zu verhindern, aber sie sind praktisch.
Sie können die Ursache auch detaillierter verfolgen, indem Sie einen Ausnahme-Haltepunkt hinzufügen
po $arg1
. Wie bereits von Ahmed-Lotfi erwähntHier ist eine allgemeine Checkliste, die Sie durchgehen können.
quelle
Andere Lösungen haben bei mir nicht funktioniert, hier ist meine. Dies gilt nur für Xcode 8, wenn es im Swift 2.3 Legacy-Modus ausgeführt wird:
Anscheinend versucht Interface Builder, die Methode umzubenennen, die mit der Schaltfläche verbunden werden soll.
Hier ist ein Radar mit mehr Details.
Die Lösung (Problemumgehung) besteht darin, den Methodenparameternamen manuell durch Folgendes zu ersetzen
_
:Ändern Sie dies:
quelle
Es könnte auch ein falscher Name für die Segue-ID sein. Z.B -
quelle
Meine Situation war etwas anders, ich habe versucht, mich in eine zu verwandeln
UINavigationController
, und was es für mich reparierte, war, den Hauptteil der Warteschlange zu bekommen.Für Ziel-C:
Für Swift 3:
quelle
Dies begann für mich auf Xcode 7 zu passieren, und ich hatte keine Steckdosen mit gelben Flaggen, die ich löschen konnte.
Das einzige, was für mich funktioniert hat, war das Ersetzen dieser Zeile im AppDelegate:
zu:
quelle
Für mich lag das Problem in meiner IBAction mit einem UIButton.
Wenn Sie Strg + Ziehen drücken, um eine IBAction aus einem UIButton zu erstellen, müssen Sie "UIButton" aus der Dropdown-Liste "Typ" auswählen. Die Standardauswahl von AnyObject führt zum Absturz der App, wenn Sie auf den UIButton tippen.
quelle
Es könnte auch eine gebrochene Triggered Segues, Scheck in Ihrem Storyboard sein, sobald Sie wieder an die segues oder Steckdose alles wieder funktionieren sollte.
Stellen Sie sicher, dass der
Identifier
Segue korrekt und Ihrem Code ähnlich ist .quelle
Dieses Problem trat auf, als ich den Namen der Variablen änderte, die mit einer meiner Schaltflächen verbunden war. Denken Sie also daran!
quelle
Ich bin neu in Xcode, daher habe ich einige Stunden gebraucht, um das Problem herauszufinden und die XLS-Datei zu laden. Ich habe die meisten Beispielcodes dort oben durchgearbeitet und keiner von ihnen löst den angezeigten Fehler-Xcode.
Die Lösung, die ich gefunden habe, war, dass wir das 'Zu Zielen hinzufügen' angeben müssen, um das hinzuzufügende Projekt anzukreuzen, wenn wir die XLS-Datei per Drag & Drop in Projekt -> Unterstützende Dateien in Xcode importieren.
quelle
Möglicherweise gibt es mehr als eine IBAction für eine Schaltfläche in Ihrem Ansichts-Controller. Versuchen Sie, diese herauszufinden, und entfernen Sie alle vorherigen Elemente für diese Schaltfläche in Ihrem Controller, und erstellen Sie eine neue Schaltfläche. Dadurch wird Ihr Problem gelöst.
quelle
Stellen Sie sicher, dass Sie keine relativen Einschränkungen dynamisch auf eine Ansicht anwenden, die noch nicht in der Ansichtshierarchie vorhanden ist.
Im obigen Beispiel wurde bottomView Teil der Ansichtshierarchie, bevor relative Einschränkungen angewendet wurden.
quelle
Ich habe diesen Fehler auf zwei Arten erhalten:
Ich habe diesen Fehler erhalten, als ich in einen anderen UIViewController gepusht habe.
JEDOCH habe ich versehentlich die andere Klasse von untergeordnet
UITabBarController
und bekam diesen Fehler.Wie habe ich es repariert? Ich habe eine Unterklasse von
UIViewController
und ich stürzte nicht mehr ab :)Ich wollte kein Storyboard verwenden. Also habe ich es gelöscht. Doch vergesse ich seine Referenz in dem Projekt löschen Einstellungen . Ich habe gerade auf das Projekt >> Allgemein >> Bereitstellungsinformationen >> geklickt und dann die Hauptschnittstelle auf Leerzeichen gesetzt. (Es wurde zuvor auf main gesetzt)
Wie Sie in beiden Situationen sehen können, wird beim Zugriff auf ein vorhandenes Objekt eine Fehlermeldung angezeigt ...
quelle
Ich werde mein Problem zur Liste der möglichen Lösungen hinzufügen, falls jemand anderes auf diesen Thread stößt.
TableView-Zellenkennung. Stellen Sie zunächst sicher, dass Ihre Zelle eine Kennung hat. Stellen Sie zweitens sicher, dass Sie auf diese Kennung verweisen, wenn Sie die Zelle aus der Warteschlange entfernen.
quelle
Swift 4 :
Ich habe diesen Fehler aufgrund einer Änderung in der UIVisualEffectView-API erhalten. In Swift 3 war dies in Ordnung:
myVisuallEffectView.addSubview(someSubview)
Aber in Swift 4 musste ich das ändern:
myVisualEffectView.contentView.addSubview(someSubview)
quelle
Ich hatte den gleichen Fehler, als ich beim Erstellen von Einschränkungen mithilfe des visuellen Formatierers einen Tippfehler für eine der Ansichten hatte. Ich hoffe das hilft jemandem ... oder mir eines Tages wieder.
quelle
Wenn Sie react native und react-native-firebase verwenden, stellen Sie sicher, dass Sie die Datei Google-Services.plist ( https://github.com/invertase/react-native-firebase/issues/313#issuecomment-320435560) verknüpfen )
quelle
In meinem Fall war es das UIAlertView auf dem iPad: UIAlertController ist abgestürzt (iPad) . Ich habe sourceView und sourceRect nicht eingerichtet.
quelle
Für meinen Fall, Xcode 8.2.1 , hatte ich eine Map Kit-Ansicht in einem Ansichts-Controller. Also ging ich zu
und hinzugefügt
MapKit.framework
, dann war es in Ordnung.Ich denke, dies gilt auch für andere Ansichten, die einen Rahmen erfordern.
PS Unter iOS 9 wurde mir mitgeteilt, dass ein Problem mit Map Kit View aufgetreten ist, während mir unter iOS 10 nichts mitgeteilt wurde!
quelle
Nur die "Drop Armageddon" -Lösung hat bei mir funktioniert:
quelle
In meinem Fall wurde XCode müde und konnte die App mit dieser Nachricht nicht starten, da die Behauptung fehlschlug (dies wurde durch unseren Code festgelegt).
Das Ausführen auf einem anderen Gerät zeigte den Assertionsfehler, den wir beheben konnten, und alles wurde wieder normal.
quelle
Für Swift 2.3
Dies scheint ein Fehler bei Xcode 8 und Swift 2.3 zu sein. Wenn Sie die Schaltflächenaktion über das Storyboard mit Ihrem Code verbinden, stellen Sie sicher, dass Xcode die Aktion nicht umbenannt hat. Für mich wird ein withSender hinzugefügt: am Ende der Methoden Ich gehe also zu meinem Code und benenne die Methode so um, dass sie mit der von Xcode geschriebenen übereinstimmt.
Überprüfen Sie für jede andere Version die richtige Antwort.
quelle
In meinem Fall war es InterfaceBuilder. Ich hatte einige Ansichten von einem anderen ViewController kopiert, wodurch die Einschränkungen durcheinander gebracht wurden.
In InterfaceBuilder hatte ich den roten Pfeilfehler auf dem ViewController.
Während der Ausführung stürzte die App ab.
quelle
In meinem Fall stürzte die App ab, weil ich die Zielmitgliedschaft des Storyboards nicht festgelegt hatte.
quelle
In meinem Fall
Build Settings
enthielt das Projekt einige nicht vorhandene Verzeichnisse fürFramework Search Paths
undLibrary Search Paths
.quelle
Ich hatte zwei Probleme:
1) In meinem Ziel war der in der Storyboard-Datei verwendete View Controller nicht enthalten.
2) Mein Storyboard war ungefähr 3 Jahre alt. Ich musste einen der Ansichts-Controller in der Registerkartenleiste von Grund auf neu erstellen (es hatte nur ein UITextField und ich weiß immer noch nicht, warum es nicht funktionierte).
quelle
Noch eine mögliche Ursache:
In meinem Fall hatte ich eine
xib
und riefBundle.main.loadNibNamed(...
an , an welchem Punkt es abstürzte. Alles meineIBOutlets
undIBActions
schien in Ordnung. Am Ende bemerkte ich, dass dasnib
tatsächlich geladen wurde, aber als ich dann versuchte, auf die erste (und einzige) Ansicht (nib.first
) zuzugreifen , funktionierte das nicht. Tatsächlichnib.count
wurde anstelle der erwarteten eine sehr große Ganzzahl (max int?) Zurückgegeben1
. Ich habe versucht, die Ansicht erneut hinzuzufügen, aber immer noch kein Glück.Am Ende habe ich die gesamte
xib
Datei gelöscht und erneut gestartet (aber ich habe einige der Ansichten in meiner Zwischenablage beibehalten, damit ich sie einfügen kann, anstatt sie erneut zu erstellen).Das hat funktioniert!
quelle
Dies kann passieren, wenn Sie eine Tabelle haben und vergessen, der Klasse UITableViewDelegate und UITableViewDataSource zuzuweisen
quelle