Ich versuche, Janrain Engage als benutzerdefiniertes Modul in Appcelerator Titanium zu integrieren. Ich habe ein Beispielmodul erstellt und den Ordner JREngage auf das Beispielmodul xcodeproj gezogen, wie in der Dokumentation von Jainrain angegeben.
Jetzt gebe ich diesem Projekt den Befehl build, führe ./build.py
dann den titanium run
Befehl aus und führe schließlich den Befehl aus. Es startet die Anwendung im Simulator mit einem leeren Bildschirm und stürzt sofort ab, wobei der folgende Fehler ausgelöst wird.
Beenden der App aufgrund der nicht erfassten Ausnahme 'NSInternalInconsistencyException', Grund: 'NIB konnte nicht im Bundle geladen werden:' NSBundle </ Users / abhilash / Bibliothek / Anwendungsunterstützung / iPhone Simulator / 4.2 / Applications / CA167346-4091-4E16-B841-955D1D391713 / test.app> (geladen) 'mit dem Namen' JRProvidersController ''
Warum kann dieser Fehler auftreten?
Im
Targets -> Build Phases
Stellen Sie sicher, dass die .xib hinzugefügt
Copy Bundle Resources
wird. Wenn sie nicht vorhanden ist, fügen Sie die .xib-Datei hinzu.quelle
versuche alles herauszufinden
Stellen Sie in Ihrem Code sicher, dass
XXXController
die Schreibweise korrekt istquelle
initWithNibName:bundle:
MethodeIch hatte das gleiche Problem (Ausnahme 'NIB konnte nicht im Bundle geladen werden: ..'), nachdem ich meinen xcode von 3.2 auf 4.02 aktualisiert hatte. Während die Bereitstellung meiner App mit Xcode 3.2 einwandfrei funktioniert hat, stürzt Xcode 4 ab und löst die oben genannte Ausnahme aus - allerdings nur, wenn ich versucht habe, sie auf dem IOS Simulator (v.4.2) bereitzustellen. Das Targeting des IOS-Geräts (v.4.1) erfolgte auch mit Xcode 4.
Es stellte sich heraus (nach stundenlangem verzweifeltem Herumkrabbeln), dass der Grund eine fast "versteckte" Einstellung in der .xib-Datei war:
Besuchen Sie die Eigenschaften der .xib-Dateien im Dateiinspektor: Die Eigenschaft 'Speicherort' wurde für alle .xib-Dateien auf 'Relativ zur Gruppe' festgelegt. Ich habe es in 'Relativ zum Projekt' und voila geändert: Alle .xib-Dateien werden jetzt korrekt in den IOS-Simulator geladen!
Ich habe keine Ahnung, was der Grund für dieses seltsame Xcode4-Verhalten ist, aber vielleicht lohnt es sich, einen Versuch zu unternehmen?
quelle
In meinem Fall war es sehr seltsam (verwenden Sie ein Storyboard): Aus irgendeinem Grund wurde es in der Liste von "Basisname der Haupt-Storyboard-Datei" in "Basisname der Hauptfeder-Datei" geändert.
Das Problem wurde durch Zurücksetzen auf "Name der Basis-Storyboard-Hauptdatei" (UIMainStoryboardFile) behoben
quelle
Der Fehler bedeutet, dass keine .xib-Datei mit
"JRProvidersController"
Namen vorhanden ist. Überprüfen Sie erneut, obJRProvidersController.xib
vorhanden.Sie laden
.xib file
mitquelle
Mit einer benutzerdefinierten Swift-Ansicht in einem Objective-C-Ansichtscontroller (ja, auch nach dem Importieren der
<<PROJECT NAME>>-Swift.h
Datei) habe ich versucht, die Schreibfeder mit folgenden Funktionen zu laden:...
NSStringFromClass([MyCustomView class])
kehrt aber zurück<<PROJECT NAME>>.MyCustomView
und das Laden schlägt fehl. TL; DR Alle funktionierten gut beim Laden der Feder mit einem String-Literal:quelle
Da das Build-Ziel eines meiner iOS-Geräte ist, habe ich mit der rechten Maustaste auf die Produktdatei (xyzw.app) geklickt und das Popup-Element Im Finder anzeigen ausgewählt. Es öffnete ein Fenster mit der xyzw.app darin; Ich öffnete das Bundle mit Show Package Contents und sah alle Dateien, die ich erwartet hatte, mit Ausnahme einer Datei, über die ich mich beschwerte, mit einem Großbuchstaben I anstelle eines Kleinbuchstaben i im Namen (zoomieVIew.nib anstelle von zoomieView.nib) ). Ich hatte den Großbuchstaben I im Dateinamen der xib bemerkt und ihn geändert und neu erstellt. Anscheinend hat Xcode den generierten .nib-Namen so belassen, wie er war. Ich habe zoomieVIew.nib im Bundle gelöscht, neu erstellt und Xcode hat die Datei ordnungsgemäß als zoomieView.nib neu erstellt. Die App begann auf dem Gerät zu arbeiten.
quelle
Ich hatte dieses Problem mit einem Storyboard und die Feder hieß so etwas wie "bKD-J3-fhr-view-ZSR-8m-2da".
Dies lag daran, dass ich versucht habe, self.view im init (withCoder) eines View Controllers eine Unteransicht hinzuzufügen. Self.view existiert noch nicht.
Verschoben nach viewDidLoad und alles besser!
quelle
Schauen Sie sich das Projekt an
Target -> Buid Phases -> Copy Bundle Resources
Sie finden Ihr xib / storyborad mit roter Farbe.
Entfernen Sie es einfach. Entfernen Sie auch alle Verweise auf fehlende Dateien aus dem Projekt.
Ziehen Sie nun diese Storyboard / XIB-Datei erneut darauf
Copy Bundle Resources
Es wird weiterhin eine Datei mit roter Farbe aber machen Sie sich darüber keine Sorgen.Einfach reinigen und Projekt bauen.
Jetzt wird Ihr Projekt wieder erfolgreich ausgeführt !!
quelle
Für Storyboard
Ich habe jede einzelne hier veröffentlichte Lösung ausprobiert, aber nichts hat bei mir funktioniert, da ich Storyboard mit Swift 5 verwende.
Ich habe gerade angefangen, neue Controller und Ansichten in der Storyboard-Test-App zu erstellen. Ich habe festgestellt, dass mir die Storyboard-ID von My View Controller fehlt.
Hier ist meine Lösung: Wenn Sie von ViewController A -> View Controller B wechseln möchten
Schritt 1. Im Storyboard: Stellen Sie einfach sicher, dass Ihr ViewControllerA in Navigation Controller eingebettet ist
Schritt 2. Im Storyboard: Überprüfen Sie nun, ob Sie die Storyboard-ID für Ihren ViewControllerB erwähnt haben, die Sie im Code als Kennung verwenden.
Schritt 3. und stellen Sie schließlich sicher, dass Sie den Controller in Ihrem ViewControllerA mit einem Klick auf die Schaltfläche auf diese Weise drücken.
quelle
Geben Sie .xib nicht ein, wenn Sie den XIB-Namen eingeben! ES IST BEREITS STILLSCHWEIGEND!
Tu das nicht:
Mach das:
quelle
Swift4-Beispiel, wenn sich MyCustomView.swift und MyCustomView.xib in einem Framework befinden. Fügen Sie dies in die Initiale von MyCustomView ein:
quelle
Ich habe auch festgestellt, dass es fehlgeschlagen ist, als ich versucht habe, die XIB mit einem Namen wie @ "MyFile.xib" zu laden. Wenn ich gerade @ "MyFile" verwendet habe, hat es funktioniert - anscheinend wird immer die Erweiterung hinzugefügt. In der Fehlermeldung wurde jedoch nur angegeben, dass MyFIle.xib im Bundle nicht gefunden werden konnte. Wenn MyFile.xib.xib angegeben worden wäre, wäre dies ein großer Hinweis gewesen.
quelle
Bei der Arbeit an Xcode 4.6.3 und der Lokalisierung meiner NIB-Dateien tritt dieses Problem ebenfalls auf.
Für mich hat nichts anderes geholfen, als "Document Versioning" im File Inspector auf Deployment 5.0 anstelle von 6.1 zu ändern.
quelle
Dies geschieht, wenn Sie die NIB-Datei umbenennen. Wenn Sie dies bereits getan haben, erstellen Sie eine neue Schreibfeder (dh kopieren Sie den Inhalt der aktuellen Schreibfeder-Datei in eine neue Schreibfeder), löschen Sie die alte Schreibfeder-Datei und das Problem wird behoben.
Bearbeiten: Mit dem neuen Xcode ab Version 4.6.3 wird die Controller-Klasse umbenannt, wenn Sie die Controller-Klasse umbenennen (mit Refactor-Funktion), und Sie müssen sich keine Gedanken über das Problem beim Laden der Feder machen.
quelle
Ich hatte gerade eine interessante Erfahrung mit Xcode 6.3.
Ich habe diesen Fehler auch immer wieder erhalten, obwohl ich alles versucht habe, was man normalerweise mit Rechtschreibung, Zielmitgliedschaft usw. denkt, wie oben vorgeschlagen. Ich habe auch mehrmals versucht, abgeleitete Daten zu bereinigen, zu löschen und die App aus dem Simulator zu löschen, um sicherzustellen, dass das Bundle korrekt erstellt wurde, aber ohne Erfolg.
Nach der Antwort von Brian Michael Bentley habe ich mich schließlich entschlossen, meine .app-Datei im Ordner meines Simulators auf meiner Festplatte zu überprüfen. Ich fand heraus, dass alle meine Schreibfedern vorhanden waren, jedoch mit einer abc ~ ipad.nib anstelle der erwarteten abc.nib. Ich habe alle diese Dateien manuell umbenannt, um den ~ ipad-Teil zu entfernen, der erstellt wurde und funktioniert hat!
Beim Versuch zu sehen, warum diese mit dem Schlüsselwort ~ ipad angehängt wurden, habe ich mir meine Projekteinstellungen angesehen und auf der Registerkarte Allgemein> Bereitstellungsinformationen nur das iPad ausgewählt. Ich habe versucht, auf einem iPhone-Simulator zu laufen. Ich glaube, dass Xcode in der Vergangenheit einen Fehler ausgegeben hat, der darauf hinweist, dass die Binärdatei das iPhone nicht unterstützt und Sie die App nicht erfolgreich ausführen können.
Ich habe die App aus dem Simulator gelöscht und das Gleiche noch einmal gemacht - wieder nur mit unterstütztem iPad. Dieses Mal enthielt die .app für jedes erwartete Storyboard abc ~ iphone.nib UND abc ~ ipad.nib und lief problemlos auf dem iPhone-Simulator. Nochmals - Wenn wir das iPad nur in unseren Einstellungen für Bereitstellungsinformationen auswählen, sollte es nicht auf dem iPhone Simulator ausgeführt werden. Dies ist ein Xcode-Fehler.
Es gibt hier also ein inkonsistentes Verhalten von Xcode und leider handelt es sich um einen zeitweiligen Fehler, der möglicherweise schwer zu reproduzieren ist, aber ich habe ihn hier eingefügt, damit er anderen in Zukunft helfen kann.
quelle
Hatte das gleiche Problem nichts funktioniert, so fand ich etwas Seltsames mit abgeleiteten Daten.
In xcode 6.3.2 musste ich:
Ändern Sie im XCode-Menü -> Einstellungen -> Registerkarte "Standorte" -> In Standorten abgeleitete Daten in "Relativ" und wechseln Sie dann zurück zu "Standard"
Dann wurde die Feder gut geladen.
quelle
Ihre XIB-Datei befindet sich wahrscheinlich außerhalb Ihres Projektordners. Dies führt dazu, dass der Zielinspektor nicht angezeigt wird. Durch Verschieben der XIB-Datei in Ihren Projektordner sollte dies jedoch behoben werden.
quelle
Seien Sie vorsichtig: Xcode unterscheidet bei Dateinamen zwischen Groß- und Kleinschreibung. Es ist nicht das gleiche "Spaß" als "Spaß".
quelle
Wenn Sie in Ihrem Projekt Frameworks verwenden, müssen Sie sicherstellen, dass Sie aus dem richtigen Bundle laden:
quelle
Für mich wurde es gelöst, indem der Name der Datei meiner Zelle in den Namen der Klasse geändert wurde.
Im Attributinspektor (dritte Registerkarte in der rechten Leiste im Storyboard):
Registrieren Sie die Zelle in Ihrem View Controller wie folgt:
tableView.register (UINib (nibName: "MyCellClass", Bundle: nil), forCellReuseIdentifier: "MyCellId")
quelle
Ich habe dieses Problem beim Transformieren meines alten Codes von XCode 3x in XCode 4 erhalten und es gelöst, indem ich einfach wwwwwww.xib in RootViewController.xib umbenannt habe
quelle
Ich bin auf das gleiche Problem gestoßen. In meinem Fall war der Name der Schreibfeder "MyViewController.xib" und ich habe ihn in "MyView.xib" umbenannt. Dies hat den Fehler beseitigt.
Ich habe auch ein Projekt von XCode 3 auf 4.2 verschoben. Das Ändern des Pfadtyps spielte keine Rolle.
quelle
Der Grund kann auch sein, dass die Datei im falschen sprachspezifischen Ordner nachgeschlagen wird, wenn Sie mit Lokalisierungen herumgespielt haben.
quelle
Jedes Mal, wenn ich den Namen eines View Controllers in meinem appDelegate umgestalte, verschwende ich Zeit damit. Durch Refactoring wird der Name der Schreibfeder in initWithNibName: @ "MYOldViewControllerName" nicht geändert.
quelle
Ich hatte das gleiche Problem: Das Umbenennen meiner View Controller-ID im Storyboard hat bei mir funktioniert.
quelle
Mir ist aufgefallen, dass es passieren kann, wenn Sie zwischen Zweigen in Git wechseln und vergessen, eine Reinigung vorzunehmen. Xib ist also da und alles ist gefunden, aber der genaue Build kann Probleme haben. Also nur für den Fall nicht vergessen, sauber zu machen
quelle
Wenn Sie im obigen Code auch eine Dateierweiterung wie "SecondView.xib" angeben, ist dies falsch und führt zu dem oben genannten Fehler. Verwenden Sie stattdessen "SecondView". Ich habe diesen Fehler gemacht.
quelle
Dies funktioniert für mich. Stellen Sie sicher, dass Sie den Namen der Schreibfeder richtig eingegeben haben.
[[NSBundle mainBundle] loadNibNamed: @ "Graphview" -Eigentümer: self options: nil];
Graphview (Name der Feder)
quelle