Je connais le sens de cette erreur, mais je me bats vraiment avec elle et j'ai besoin de l'aide de quelqu'un:
2010-09-21 15:03:11.562 Stocks[5605:207] *** Terminating app due to uncaught
exception 'NSUnknownKeyException', reason: '[<NSObject 0x499fb20>
setValue:forUndefinedKey:]: this class is not key value coding-compliant
for the key actionText.'
Voici mon code ici:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface AlertCell : UITableViewCell {
IBOutlet UILabel *actionText;
}
@property (retain, nonatomic) UILabel *actionText;
@end
Et
@implementation AlertCell
@synthesize actionText;
- (void)dealloc {
[actionText release];
[super dealloc];
}
@end
Le problème se produit juste là:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
AlertCell *cell =
(AlertCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AlertCell"
owner:nil
options:nil];
for (id oneObject in nib) {
if ([oneObject isKindOfClass:[UITableViewCell class]]) {
cell = (AlertCell *)oneObject;
break;
}
}
}
cell.actionText.text = [arrayAlert objectAtIndex:indexPath.row];
return cell;
}
Sur cette ligne:
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AlertCell"
owner:nil
options:nil];
Comme demandé, voici mon en-tête pour le TableViewCOntroller:
#import <UIKit/UIKit.h>
@interface AlertesViewController : UITableViewController {
NSMutableArray *arrayAlert;
}
Et vous pouvez voir mon fichier XIB (en XML): http://Pastebin.com/FDVzLYZu
@fin
Quelqu'un peut-il m'aider ? Merci beaucoup !
Il existe plusieurs options pour résoudre ce problème - je vous laisse choisir celle qui convient le mieux.
La raison pour laquelle cela échoue est que le propriétaire est passé à zéro. Vous liez la sortie actionText au propriétaire du fichier dans IB, mais lors du chargement de la nib, le propriétaire est nil. J'imagine que lorsque vous chargez un propriétaire nil en coulisse, un objet NSObject est utilisé, ce qui explique pourquoi vous obtenez l'erreur clé/valeur.
Mon conseil précédent de passer la cellule en tant que propriétaire échouerait également car je ne savais pas comment la plume était construite; la cellule est nulle comme vous ne l'avez pas encore créée (et la file d'attente renvoie zéro, donc même la cellule passe puisque le propriétaire passe essentiellement à zéro).
Deux options:
------- La réponse originale conservée ci-dessous car la classe de propriétaire du fichier est également une cause fréquente de cette erreur -------
Cela suggère que vous avez 'instancié' un AlertCell dans InterfaceBuilder, et que vous liez quelque chose à actiontext, mais que la classe n'est pas définie sur AlertCell, c'est toujours NSObject?
Examinez la zone de texte de la classe dans l'onglet Identifier de la palette d'outils pour cet objet dans Interface Builder. La classe devrait être AlertCell, mais je suppose qu'elle est toujours définie sur NSObject.
En passant, et n'hésitez pas à ignorer ce conseil, mais il y a quelques autres choses que je vous encourage à faire, purement d'un attentes/conventions de l'objectif C point de vue:
vous avez probablement basé votre code sur un didacticiel Web tel que celui situé à http://www.e-string.com/content/custom-uitableviewcells-interface-builder ou http: //www.icodeblog. com/2009/05/24/custom-uitableviewcell-using-interface-builder/
Votre problème (et je suis sûr à 99% que c'est là que vous avez trébuché, je viens de commettre la même erreur), c'est que dans le générateur d'interface, vous avez lié vos IBOutlets à partir du propriétaire du fichier, alors que vous devriez les lier à partir de la vue cellule. C'est pourquoi vous obtenez les erreurs.
J'ai eu le même problème, et je ne pouvais pas trouver la variable/élément mentionné dans aucun fichier. J'ai suivi les étapes suivantes.
Environnement: Xcode 6
check UIControl Référence du nom de la propriété OutLet from nib/StoryBoard File
Assurez-vous que la cellule sélectionnée place la classe personnalisée et non le propriétaire du fichier dans le but d'ajouter la classe personnalisée .__ en haut à droite Vue de classe à cellule
Peut-être que cela aide: Indentity Inspector lorsque vous avez sélectionné le propriétaire du fichier - UITableViewCell, lorsque vous avez sélectionné la cellule dans Objets Votre champ de cellule personnalisé
Au bout de 2 heures, je me suis rendu compte que j'avais oublié de
@synthesize tableView = _tableView;
J'espère que ça aide.
Mário
#import <UIKit/UIKit.h>
@interface ReceptionDetailCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *productName;
@property (weak, nonatomic) IBOutlet UILabel *billType;
@property (weak, nonatomic) IBOutlet UILabel *bookTime;
@property (weak, nonatomic) IBOutlet UILabel *doctorName;
@property (weak, nonatomic) IBOutlet UILabel *downBillManName;
@end
Vérifiez le code de la cellule et les paramètres du storyboard, s’ils existent tous, peut-être avez-vous changé leur nom.