web-dev-qa-db-fra.com

Impossible de charger la NIB dans le paquet

J'essaie d'intégrer Janrain Engage en tant que module personnalisé à Appcelerator Titanium. J'ai créé un exemple de module et déplacé le dossier JREngage vers l'exemple de module xcodeproj, comme indiqué dans la documentation de Jainrain. 

Maintenant, je donne la commande de construction à ce projet, puis j'exécute le ./build.py et finalement, j'exécute la commande titanium run. Il lance l'application dans le simulateur avec un écran vide et se bloque immédiatement en lançant l'erreur suivante.

Arrêt de l'application en raison d'une exception non interceptée 'NSInternalInconsistencyException', raison: 'Impossible de charger la carte d'interface réseau dans l'ensemble:' NSBundle </ Users/abhilash/Bibliothèque/Application Support/iPhone Simulator/4.2/Applications/CA167346-4091-4E16-B841-955D1D391713/test.app> (chargé) 'avec le nom' JRProvidersController ''

Pourquoi cette erreur pourrait-elle se produire? 

87
Goje87

Visitez les propriétés des fichiers .xib dans l'inspecteur de fichiers la propriété "Adhésion à la cible" s'affiche dans la zone de sélection, puis votre fichier xib était lié à votre cible.

185
sevenpounds

Dans Targets -> Build Phases Assurez-vous que le fichier .xib est ajouté à Copy Bundle Resources. S'il n'est pas présent, ajoutez le fichier .xib 

35
kunalg

essayer de tout savoir 

XXXController = [[XXXControlloer alloc] initWithNibName:@"XXXController" bundle:nil];

dans votre code et assurez-vous que XXXController est orthographié correctement

22
chings228

J'ai eu le même problème (exception 'Impossible de charger la NIB dans le paquet: ..') après la mise à niveau de mon xcode de 3.2 à 4.02. Tandis que le déploiement de mon application avec Xcode 3.2 fonctionnait correctement, il se bloquait et xcode 4 levait l'exception mentionnée ci-dessus, mais uniquement lorsque j'essayais de le déployer sur le simulateur IOS (v.4.2). Le ciblage du périphérique IOS (v.4.1) agissait également avec Xcode 4. 

Il s'est avéré (après des heures de recherches désespérées) que la raison en était un paramètre presque "caché" dans le fichier .xib:

Visitez les propriétés des fichiers .xib dans l'inspecteur de fichiers: La propriété "Emplacement" a été définie sur "Relative au groupe" pour tous les fichiers .xib. Je l’ai changée en 'Relative to project' et voila: tous les fichiers .xib sont maintenant correctement Chargés dans le simulateur IOS!

Je n'ai aucune idée de la raison derrière ce comportement étrange de Xcode4, mais peut-être que cela vaut la peine d'essayer?

14
creator_11

Dans mon cas, c’était très bizarre (utiliser un storyboard): Pour une raison quelconque, le nom "Nom de base du fichier du storyboard" a été remplacé par "Nom de la base du fichier nib principal" dans la liste d’affichage.

Revenir à "Nom de base du fichier de scénario principal" (UIMainStoryboardFile) a résolu le problème.

12
Tibidabo

l'erreur signifie qu'il n'y a pas de fichier .xib avec "JRProvidersController" nom . vérifier si JRProvidersController.xib existe.

vous allez charger .xib file avec

controller = [[JRProvidersController alloc] initWithNibName:@"JRProvidersController" bundle:nil];
8
Hanuman

La cible de construction étant l'un de mes appareils iOS, j'ai cliqué avec le bouton droit sur le fichier Produit (xyzw.app) et sélectionné l'élément contextuel Afficher dans le Finder. Il a ouvert une fenêtre avec le xyzw.app à l'intérieur; J'ai ouvert le paquet en utilisant Afficher le contenu du paquet et j'ai vu tous les fichiers auxquels je m'attendais, sauf un, celui dont il se plaignait, avec une majuscule I au lieu d'une minuscule i dans le nom (zoomieVIew.nib au lieu de zoomieView.nib ). J'avais remarqué la majuscule I dans le nom du fichier xib, puis je l'avais modifié et reconstruit; apparemment, Xcode a laissé le nom de fichier .nib généré tel quel. J'ai supprimé zoomieVIew.nib dans le paquet, reconstruit et Xcode dûment recréé le fichier en tant que zoomieView.nib. L'application a commencé à fonctionner sur l'appareil.

6

En utilisant une vue Swift personnalisée dans un contrôleur de vue Objective-C (oui, même après avoir importé le fichier <<PROJECT NAME>>-Swift.h), j'avais essayé de charger le nib avec:

MyCustomView *customView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([MyCustomView class]) owner:self options:nil] objectAtIndex:0];

... mais NSStringFromClass([MyCustomView class]) renvoie <<PROJECT NAME>>.MyCustomView et le chargement échoue. TL; DR Tous ont bien travaillé en chargeant la pointe en utilisant un littéral de chaîne:

MyCustomView *customView = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil] objectAtIndex:0];
6
Tom Howard

Regardez sur le projet

Target -> Buid Phases -> Copy Bundle Resources

Vous trouverez votre xib/storyborad de couleur rouge.

Supprimez simplement it.Aussi, supprimez toutes les références du fichier manquant du projet.

Maintenant, faites de nouveau glisser ce fichier storyboard/xib sur ce Copy Bundle Resources.Il vous montrera toujours votre fichier en rouge mais ne vous en faites pas.

Juste nettoyer et construire le projet.

Maintenant, vous allez relancer votre projet!

4
iChirag

J'ai eu ce problème avec un storyboard et la plume s'appelait quelque chose comme 'bKD-J3-fhr-view-ZSR-8m-2da'.

C'est parce que j'essayais d'ajouter une sous-vue à self.view dans l'init d'un contrôleur de vue (withCoder). Self.view n'existe pas encore.

Déplacé pour voirDidLoad et tout le meilleur!

4
Will Larche

Exemple Swift4 si votre MyCustomView.Swift et MyCustomView.xib dans un framework. Placez ceci dans le MyCustomView 's init:

let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "MyCustomView", bundle: bundle)
if let nibView = nib.instantiate(withOwner: self, options: nil).first as? UIView {
    self.aViewInMyCustomView = nibView
    self.aViewInMyCustomView.frame = self.frame
    self.addSubview(self.aViewInMyCustomView)
    // set constraints
    self.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint(item: self.aViewInMyCustomView, attribute: .leading, relatedBy: .equal, toItem: self, attribute: .leading, multiplier: 1.0, constant: 0).isActive = true
    NSLayoutConstraint(item: self.aViewInMyCustomView, attribute: .trailing, relatedBy: .equal, toItem: self, attribute: .trailing, multiplier: 1.0, constant: 0).isActive = true
    NSLayoutConstraint(item: self.aViewInMyCustomView, attribute: .top, relatedBy: .equal, toItem: self, attribute: .top, multiplier: 1.0, constant: 0).isActive = true
    NSLayoutConstraint(item: self.aViewInMyCustomView, attribute: .bottom, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1.0, constant: 0).isActive = true
} 
2
norbDEV

J'ai également constaté que cela avait échoué lorsque j'ai essayé de charger le fichier XIB avec un nom tel que @ "MyFile.xib". Quand je viens d'utiliser @ "MyFile", cela a fonctionné - apparemment, il ajoute toujours l'extension. Mais le message d'erreur vient d'indiquer qu'il ne pouvait pas trouver MyFIle.xib dans le bundle - s'il avait dit MyFile.xib.xib, cela aurait été un gros indice.

2
Jonathan Starr

NE METZ PAS .xib LORSQUE VOUS INSCRIVEZ LE NOM XIB! IT IS DÉJÀ IMPLIQUÉ! 

Ne faites pas ceci:

 UIView *viewFromNib = [[NSBundle mainBundle] loadNibNamed:@"ResultsAssessmentView.xib" owner:self options:nil][0];

Faire ceci:

 UIView *viewFromNib = [[NSBundle mainBundle] loadNibNamed:@"ResultsAssessmentView" owner:self options:nil][0];
2
coolcool1994

Je viens de vivre une expérience intéressante avec Xcode 6.3.

J'ai continué à avoir cette erreur aussi, malgré tout ce que vous pensiez normalement avec l'orthographe, l'appartenance à une cible, etc. J'ai également essayé de nettoyer, de supprimer les données dérivées et également de supprimer l'application du simulateur à plusieurs reprises pour s'assurer que l'ensemble était correctement construit, mais en vain.

Finalement, après la réponse de Brian Michael Bentley, j'ai finalement décidé d'inspecter mon fichier .app dans le dossier de mon simulateur sur mon disque dur. J'ai trouvé que toutes mes nibs étaient là mais avec un abc ~ ipad.nib au lieu de l'abc.nib attendu. J'ai manuellement renommé tous ces fichiers pour supprimer la partie ~ ipad, construit et cela a fonctionné!

En essayant de comprendre pourquoi ils ont été ajoutés avec le mot clé ~ ipad, j'ai examiné les paramètres de mon projet et, en fait, dans l'onglet Général> Informations de déploiement, je n'avais sélectionné que l'iPad. J'essayais de courir sur un simulateur iPhone. Je crois que par le passé, Xcode donnait une erreur indiquant que le fichier binaire ne supportait pas l'iPhone et que vous ne parveniez pas à exécuter l'application.

J'ai supprimé l'application du simulateur et j'ai refait la même chose - encore une fois avec uniquement un iPad pris en charge. Cette fois, le fichier .app contenait abc ~ iphone.nib ET abc ~ ipad.nib pour chaque storyboard attendu et il fonctionnait parfaitement sur le simulateur iPhone. Encore une fois - Si nous choisissons l'iPad uniquement dans nos paramètres d'informations de déploiement, il ne devrait pas fonctionner sur iPhone Simulator. C'est un bug de Xcode.

Donc, il y a un comportement incohérent de la part de Xcode et, malheureusement, il s’agit d’un bogue intermittent qui peut être difficile à reproduire, mais j’ai mis cela ici pour qu’il puisse aider les autres à l’avenir.

Si ce même problème ne fonctionnait pas, j’ai donc pensé que c’était bizarre avec les données dérivées.

Dans xcode 6.3.2 je devais:

Dans le menu XCode -> Préférences -> Onglet Emplacements -> Dans Emplacements, modifiez les données dérivées en données relatives, puis revenez à la valeur par défaut.

Ensuite, la pointe chargée bien.

2
Kevin

Cela se produit lorsque vous renommez le fichier nib. Si vous avez déjà créé un nouveau nib (c’est-à-dire copier le contenu du fichier nib actuel dans un nouveau nib), supprimez l’ancien fichier nib et le problème sera résolu.

Edit: Avec le nouveau Xcode à partir de la version 4.6.3, si vous renommez (avec la fonction refactor) la classe de contrôleur, elle renommera également le fichier nib et vous n’aurez plus à vous soucier du problème de chargement de nib.

2
NetDeveloper

En travaillant sur Xcode 4.6.3 et en localisant mes fichiers NIB, je rencontre également ce problème.

Pour moi, rien d'autre n'a aidé à changer la "version des documents" de File Inspector en déploiement 5.0 au lieu de 6.1.

2
krafter

Votre fichier XIB est probablement en dehors de votre dossier de projet. Cela conduit à ne pas afficher l'inspecteur de cible. Cependant, déplacer le fichier XIB dans le dossier de votre projet devrait le réparer.

1
hhamm

Attention: Xcode est sensible à la casse avec les noms de fichiers. Ce n'est pas le même "Fun" que "fun".

0
oskarko
SecondViewController *secondViewController = [[SecondViewController alloc]initWithNibName:@"SecondView.xib" bundle:nil];
    [self.navigationController pushViewController:secondViewController animated:YES];

Dans le code ci-dessus, si vous attribuez également une extension de fichier telle que "SecondView.xib", elle est erronée et vous donnera l'erreur ci-dessus. Utilisez "SecondView" à la place. J'ai commis cette erreur.

0
NSPratik

Si vous utilisez des frameworks dans votre projet, vous devez vous assurer que vous chargez depuis le bon bundle:

NSBundle *bundle = [NSBundle bundleWithIdentifier:@"<your bundle id here>"];
ABCViewController *vc = [[ABCViewController alloc] initWithNibName:@"<your nib name>" bundle:bundle];
0
david72

J'ai remarqué que cela peut arriver si vous passez d'une branche à l'autre et oubliez de nettoyer. Donc xib est là et tout est trouvé, mais la construction exacte peut poser problème. Donc, au cas où, n'oubliez pas de faire un nettoyage

0
Ezeki

Cela a fonctionné pour moi ... Assurez-vous que vous avez entré le nom de la plume correctement.

[[NSBundle mainBundle] loadNibNamed: @ "Graphview" propriétaire: options auto: nil];

Graphview (nom de la plume)

0

Pour Storyboard

J'ai essayé toutes les solutions postées ici, mais rien ne fonctionnait pour moi car j'utilise Storyboard avec Swift 5.

Je viens juste de commencer à construire de nouveaux contrôleurs et vues dans l'application de test de storyboard. Ce que j'ai découvert, c'est que je n'avais pas l'ID de storyboard de My View Controller.

Alors voici ma solution, si vous voulez aller de ViewController A -> View Controller B

Étape 1. Dans le storyboard: assurez-vous simplement que votre ViewControllerA est intégré au contrôleur de navigation.

Étape 2. Dans le storyboard: Maintenant, vérifiez avez-vous mentionné l'ID de storyboard pour votre ViewControllerB que vous utiliserez dans le code comme identifiant.

 enter image description here 

Étape 3. et assurez-vous enfin que vous poussez le contrôleur de cette manière dans votre ViewControllerA en cliquant sur le bouton.

if let viewControllerB = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewControllerB") as? ViewControllerB {

            if let navigator = navigationController {
                navigator.pushViewController(viewControllerB, animated: true)
            }
        }
0
swiftBoy

J'ai eu ce problème lors de la transformation de mon ancien code de XCode 3x en XCode 4 et Il a été résolu en renommant simplement www.www.xib en RootViewController.xib.

0
Nikolay Frick

J'ai eu le même problème, renommer mon identifiant de contrôleur de vue en storyboard a fonctionné pour moi.

0
Dave

J'ai rencontré le même problème. Dans mon cas, le nom de nib était "MyViewController.xib" et je l'ai renommé "MyView.xib". Cela s'est débarrassé de l'erreur.

Je déplaçais également un projet de XCode 3 à 4.2. Changer le type de chemin n'avait pas d'importance.

0
vesselhead

La raison peut également être que le fichier est recherché dans le mauvais dossier spécifique à la langue lorsque vous vous êtes planté avec des localisations.

0
MacMark

Chaque fois que je refactorise le nom d'un contrôleur de vue qui se trouve dans mon appDelegate, je perds du temps à ce sujet. Le refactoring ne change pas le nom du nib dans initWithNibName: @ "MYOldViewControllerName".

0
cloudsurfin

pour moi, le problème a été résolu en changeant simplement le nom du fichier de ma cellule pour qu'il corresponde à celui de sa classe.

Dans l’Inspecteur des attributs (troisième onglet de la barre de droite dans le scénario):

  1. Définir l'identifiant de la cellule (par exemple: "MyCellId"),
  2. Définissez la classe de la cellule (par exemple: "MyCellClass" lorsque le fichier est "MyCellClass"),
  3. Enregistrez la cellule dans votre contrôleur de vue comme suit:

    tableView.register (UINib (nibName: "MyCellClass", bundle: nil), pourCellReuseIdentifier: "MyCellId")

0
Marjan Basiri

J'ai le même problème et mon fichier .xib est déjà lié dans Target Membership au projet. Ensuite, j'ai décoché la case de la cible du fichier, puis coché, puis Clean et Build le projet. Fait intéressant, cela a fonctionné pour moi. 

0
elia