web-dev-qa-db-fra.com

Xcode 4.5 corrompant les XIB?

j'utilise le nouveau xcode 4.5, J'ai ces lignes de code sur un contrôleur de vue:

DiscoverCell* cell=[table dequeueReusableCellWithIdentifier:@"DiscoverCell"];
if(cell==nil){
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DiscoverCell" 
                                                 owner:self 
                                               options:nil];
    cell = [nib objectAtIndex:0];
} 

quand j'exécute l'application en cours de lancement: arrêt de l'application en raison d'une exception non interceptée 'NSInternalInconsistencyException', raison: 'les données NIB ne sont pas valides.' sur la ligne LoadNib, ce xcode est-il une ordure Apple?

45
Dima

Décochez la case "utiliser Autolayout" en surbrillance dans l'image ci-dessous. Xcode 4.5 active cette propriété par défaut pour les nouveaux fichiers nib ajoutés à votre projet. Décocher la case à cocher autolayout a résolu le problème 

59
aToz

J'avais ce même problème et je l'ai corrigé en décochant la case à cocher "Utiliser la sauvegarde automatique" dans le volet Inspecteur des documents dans Utilitaires.

71
tomgerhardt

Je viens d'avoir ce problème et le traqué jusqu'à un UIButton qui avait le champ Titre défini sur Attribué dans l'inspecteur des attributs. Changer cela en Plain a résolu le problème. Si je me souviens bien, j'ai ajouté ce bouton dans la dernière version de Xcode et j'ai eu des problèmes avec ce dernier également.

8
Symmetric

Pour moi, c'était une combinaison du commentaire de Jason Coco et de la réponse de tomgerhardt: Mon application cible iOS5, je suis passée à Xcode 4.5 et j'ai créé un nouveau NIB. Par défaut, cette cible iOS6, provoquant un crash. Je règle ceci sur iOS5 dans la fenêtre d'inspecteur de fichiers de la carte réseau.

Ensuite, une erreur du compilateur m'a indiqué que Use Autolayout n'était pas pris en charge pour iOS5, il était alors activé dans l'inspecteur de document et mon problème était résolu.

6
Asciiom

J'utilise Xcode 4.5 et le simulateur iPhone 5.0 et cette même erreur lorsque la première table a été affichée. En suivant le conseil de «décocher l'autolayout», je l'ai fait fonctionner en basculant la version des documents sur iOS 5.0. (Scénarimage sélectionné -> onglet Identifier le fichier -> Document Interface Builder -> Versionnage du document.) La mise en forme automatique était déjà désélectionnée.

4
Ben

Après la désactivation de la disposition automatique pour tous mes fichiers .xib, il me restait toujours l'erreur . C'était parce que j'avais utilisé Text -> Attribué pour un UILabel dans un fichier .xib.

Après l'avoir défini sur Plain, l'erreur a disparu.

2
Jasper

Donc, après environ une heure d'essayer de comprendre cela, j'ai compris le problème. C’est bien ce qui est décrit ci-dessus: assurez-vous que votre .xib est défini sur la même version cible (dans ce cas, probablement <6,0) que celle pour laquelle votre application principale a été écrite, particulier .xib.

Si cela fonctionne dans le simulateur, c'est parce que votre simulateur exécute iOS6. Lorsque vous essayez d'utiliser un appareil avec un ancien iOS, cela entraînera cette erreur. Mon problème était, je créais un TableViewCell personnalisé qui par défaut était ciblé pour iOS 6 et avait le "Use Autolayout" coché. C'était le coupable pour moi.

J'espère pouvoir sauver à quelqu'un le chagrin que cette erreur m'a causé!

2
CoBrA2168

Le nom après "loadNibNamed:" doit être le nom du fichier nib (dans le navigateur de projet situé dans la partie gauche de l'écran), parfois des personnes y écrivent "identificateur de cellule" qui écrit depuis le début dans CellForRowAtIndexPath (NSString statique ...) .

Peut-être votre problème dans cette petite faute?

0
Vladimir