2015-01-26 2 views
13

Ich habe eine heutige Erweiterung erstellt, die Artikel aus einem Feed herunterlädt und die neuesten anzeigt. Das Ganze funktionierte gut auf iOS 8, arbeitete immer noch auf iOS 8.1, dann kam iOS 8.1.2 und wir begannen Beschwerden über die heutige Erweiterung zu haben, die nicht mehr funktionierte. Ich habe versucht, das Debuggen auf iOS 8.1.2 Geräte und vor der Erweiterung sogar starten, stürzt es mit diesem Fehler:Heute stürzt die Extension ab, bevor sie auf iOS 8.1.2 gestartet wird

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: <__NSConcreteUUID 0x174027280> 5AFB07AB-5DCD-46FE-8D07-44DE0F3789F2)' 

ich diesen Beitrag über häufige Fehler gelesen haben passiert, wenn heute eine Erweiterung der Entwicklung: http://www.atomicbird.com/blog/ios-app-extension-tip

in seinem Beitrag, Tom Harrington sagt:

in iOS 8 (und andere neuere Versionen), so dass Module in Build-Einstellungen des Xcode bedeutet, dass Sie den Rahmen alle müssen Sie verwenden möchten nicht explizit aufzulisten. Sie werden automatisch gefunden.

Dies ist jedoch nicht mit NotificationCenter.framework, die Today-Erweiterungen verwenden. Wenn Sie das aus den Build-Einstellungen entfernen, erhalten Sie keine Build-Warnungen oder Fehler. Aber wenn Sie versuchen, die Erweiterung zu laden, erhalten Sie eine Ausnahme von Libextension.dylib und Ihre Erweiterung wird nicht geladen. Die Ausnahmemeldung ist nicht aufschlussreich:

2014-08-16 12: 06: 53,793 TodayTestExtension [41313: 6.111.763] * Abschluss app aufgrund abgefangene Ausnahme 'NSInvalidArgumentException', Grund: ‚* setObjectForKey: Objekt nicht be nil (Schlüssel: < __NSconcreteUUID 0x7fd729422390> ED3B42F8-66CD-4CB0-BCD5-F3DBA6F34DB5) ' Wenn Sie eine Heute-Erweiterung machen, lassen Sie dieses Framework einfach in den Build-Einstellungen. Es sollte nicht dort sein müssen, aber es tut es.

Meine Erweiterung tut NotificationCenter.framework in seine Build-Einstellungen umfassen, aber ich vermute, mein Problem in irgendeiner Weise ähnlich sein könnten.

Wer hatte ein ähnliches Problem? Irgendeine Idee, wie man es löst?

+0

Wow, das ist entmutigend. Es sieht genau so aus, aber das ist das einzige, was ich weiß, dass dieses Problem verursachen würde. –

+0

Waren diese Beschwerden von Nutzern "im Feld" oder von Nutzern, die Testbuilds Ihrer App ausführen? In erster Linie wäre es ein 8.1.2 Bug und es würde nicht viel geben, was Sie tun könnten. In der zweiten könnte es ein Xcode-Problem sein, das reparierbar sein könnte. –

Antwort

0

Schließlich habe ich versucht, NotificationCenter.framework von meinem Ziel zu entfernen und es zurückzusetzen, das Projekt gereinigt, und es funktioniert jetzt wieder. Ich denke, das Framework war nicht richtig verbunden, obwohl ich es mit xcode auf meinem Ziel sehen konnte. Außerdem kann ich nicht herausfinden, warum es funktioniert hat, dann habe ich mit der Ankunft von 8.1.2 aufgehört zu arbeiten.

0

Gerade das gleiche Problem erlebt. Für mich war es "Hauptschnittstelle" -Eigenschaft in "Allgemeine Einstellungen" des Tastaturziels. Es war leer und ich legte es auf meine Storyboard-Datei und jetzt funktioniert es wie ein Zauber. Screenshot

32

Dieser Fehler tritt auch auf, wenn Sie NSExtensionPrincipalClass in "Info.plist" verwenden, um eine Basisklasse (anstelle eines Storyboards) mit dem Namen eines ViewControllers zu definieren, der nicht vorhanden ist.

Wenn Swift verwendet wird, muss der Klasse der Modulname (normalerweise der Name des Ziels) wie "Module.MyViewController" vorangestellt werden.

+3

Super, das hat funktioniert! Ich habe es dann für ein Extra an Flexibilität in '$ (PRODUCT_NAME) .' geändert. – user2565077

+0

Sie sparen mein Leben! – Hilen

+0

Diese Lösung gilt für den Erweiterungstyp _any_. Und der "Wenn Swift" Teil ist ** wichtig **. Vergiss diesen Modulnamen nicht. –

Verwandte Themen