私はこのエラーの意味を知っていますが、私は本当にそれと格闘しています、そして私は誰かの助けが必要です:
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.'
ここに私のコードがあります:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface AlertCell : UITableViewCell {
IBOutlet UILabel *actionText;
}
@property (retain, nonatomic) UILabel *actionText;
@end
そして
@implementation AlertCell
@synthesize actionText;
- (void)dealloc {
[actionText release];
[super dealloc];
}
@end
問題はそこで発生します。
- (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;
}
この行で:
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AlertCell"
owner:nil
options:nil];
尋ねられたように、TableViewCOntrollerのヘッダーは次のとおりです。
#import <UIKit/UIKit.h>
@interface AlertesViewController : UITableViewController {
NSMutableArray *arrayAlert;
}
そして、あなたは私のXIBファイルを(XMLとして)見ることができます: http://Pastebin.com/FDVzLYZ
@終わり
誰も私を助けることができますか?どうもありがとう !
これを解決するためのオプションがいくつかあります-どれが最も適切かを判断させてください。
失敗する理由は、所有者がnilとして渡されているためです。 actionTextアウトレットをIBのファイルの所有者にバインドしていますが、nibをロードするとき、所有者はnilです。背後でnilオーナーを使用してロードする場合、NSObjectが使用されているため、キー/値エラーが発生していると思います。
ペン先がどのように構成されているかわからなかったため、所有者としてセルを渡すという以前のアドバイスも失敗します。セルはまだ作成していないのでnilです(そしてデキューはnilを返しているので、所有者がまだ基本的にnilを渡しているのでcellを渡します)。
2つのオプション:
-------ファイルの所有者クラスもこのエラーの一般的な原因であるため、以下に元の回答を保持-------
InterfaceBuilderでAlertCellを「インスタンス化」し、actiontextに何かをバインドしているが、クラスがAlertCellに設定されておらず、NSObjectのままであることを示唆しています。
Interface Builderでそのオブジェクトのツールパレットの識別タブにあるクラステキストボックスを見てください。クラスはAlertCellである必要がありますが、NSObjectに設定されていると思います。
余談ですが、このアドバイスを無視しても構いませんが、純粋にObjective Cの期待/慣習の観点から、私はあなたにそうすることをお勧めします。
あなたはおそらく http://www.e-string.com/content/custom-uitableviewcells-interface-builder または http:/ /www.icodeblog.com/2009/05/24/custom-uitableviewcell-using-interface-builder/
あなたの問題(これはあなたがつまずいた場所であると99%確信しています、私はちょうど同じ間違いを犯しました)は、セルビルダーからリンクする必要があるときに、ファイルの所有者からIBOutletsをリンクしたインターフェイスビルダーです。これがエラーが発生する理由です。
私は同じ問題を抱えていて、どのファイルにも前述の変数/要素が見つかりませんでした。次の手順に従いました。
環境:Xcode 6
uIControlの確認OutLetプロパティ名の参照 nib/StoryBoardファイルから
セルを選択して、ファイルの所有者ではなくカスタムクラスを配置し、右側上部にカスタムクラスを追加します。変更する前に、アウトレット接続を削除してから、ファイルの所有者からカスタムクラスを削除し、セルビューにクラスを追加します
Indentity Inspector ファイルの所有者を選択した場合-UITableViewCell、Objects内のセルを選択した場合カスタムセルnane
これで2時間後、私は忘れていたことに気付きました
@synthesize tableView = _tableView;
それが役に立てば幸い。
マリオ
#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
Cellコードとストーリーボードの設定を調べてください。それらがすべて存在するかどうかにかかわらず、名前を変更した可能性があります。