Ich erstelle eine Anwendung mit einem UITabBar
für die Navigation, und um mehr als die Standard 5 Tabs Apple Ihnen gibt, verwende ich ein Framework genannt JFATabBarController. Das Framework ist in Objective-C geschrieben, während der Rest meiner App in Swift geschrieben ist. In einer der Registerkarten habe ich eine Liste von Schaltflächen und wenn der Benutzer eine Taste drückt, beginnt er ein Video mit AVPlayerViewController
zu spielen. Das Video wird im Portrait-Modus gut, aber sobald das Telefon Landschaft meiner App abstürzt gedreht und gibt mir die folgende Fehlermeldung in der Konsole:- [__ NSArrayM objectAtIndex:]: Index 9223372036854775807 über Grenzen hinweg [0 .. 8] Swift
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 9223372036854775807 beyond bounds [0 .. 8]'
*** First throw call stack:
(0x181c56e38 0x1812bbf80 0x181b36ebc 0x100157efc 0x186daf4b4 0x18714d0f0 0x18714a3b4 0x186ea462c 0x186ea4494 0x18740c32c 0x1870ba244 0x18740c124
0x186dd8e90 0x186df09c8 0x18740bfe4 0x18709bf30 0x18709d190 0x186e24b6c 0x186e244a0 0x186e1ac20 0x186da21c8 0x181bf8eac 0x181bf86cc 0x181bf844c
0x181c61494 0x181b36788 0x18253e89c 0x186da183c 0x187060cf0 0x187060c60 0x186da164c 0x186da0eb8 0x186e106b0 0x18341d86c 0x18341d358 0x181c0d85c
0x181c0cf94 0x181c0acec 0x181b34d10 0x18341c088 0x186e09f70 0x10007c138 0x1816d28b8)
libc++abi.dylib: terminating with uncaught exception of type NSException
Die App im Porträt ist, so dass es nicht einmal möglich sein sollte, sich in die Landschaft verwandeln.
Der Fehler Thread 1: signal SIGABRT
in Zeile 119 von JFATabBarController.m geworfen wird:
UIButton *oldButton = self.tabButtons[self.selectedIndex];
tabButtons
ist ein NSMutableArray
auf Linie 73 von JFATabBarController.m definiert:
- (NSMutableArray *)tabButtons
{
if (!_tabButtons)
{
_tabButtons = [NSMutableArray new];
}
return _tabButtons;
}
Und self.selectedIndex
ist der Index des View-Controllers, der dem aktuell ausgewählten Tab-Element zugeordnet ist. wie es in den Apple-Dokumenten heißt.
Nun habe ich einige Nachforschungen angestellt und herausgefunden, dass 9223372036854775807 die größte mögliche Variable und auch die Konstante NSNotFound
ist. Ich habe auch gelesen, dass ich nach NSNotFound
mit einer if
Aussage überprüfen muss, aber wenn ich das versuche, stürzt die APP noch ab und verschiebt den Fehler zur if
Aussage.
So zur Zeit bin ich ein wenig aus Ideen und ich hoffe, dass es ein paar geschickte Leute hier, die mir helfen können! Vielen Dank!
Können Sie uns den Code zeigen, wenn Sie nach 'NSNotFound' suchen, das nicht funktioniert? – Sulthan