3

内部に UITableView を持つ UIViewController があります。ビューには他のものがあるため、UIViewController は UITableViewController ではありません。コンセントを接続しないと、空のテーブルが他のものと一緒にビューに表示され、エラーは発生しません。UIViewController から UITableView にアウトレットを接続すると、次のエラーが発生します。

「[<UIViewController 0x748a420> setValue:forUndefinedKey:]: このクラスは、キー tableStories のキー値コーディングに準拠していません。」

データソースも接続し、アウトレットを UITableView から UIViewController に委任すると、同じエラーが発生します。ビューコントローラーの .h は次のとおりです

#import <UIKit/UIKit.h>

@interface IntroViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>


@property (nonatomic, weak) IBOutlet UITableView *tableStories;
@property (nonatomic, strong) NSManagedObjectContext* managedObjectContext;
@property (nonatomic, strong) NSArray *stories;

そして、ここに.mがあります

@implementation IntroViewController

@synthesize tableStories;
@synthesize stories;
@synthesize managedObjectContext;


- (void)viewDidLoad
{
    [super viewDidLoad];

    tableStories.delegate = self;
    tableStories.dataSource = self;

    managedObjectContext = ((ReadMeAppDelegate *)[UIApplication sharedApplication].delegate).managedObjectContext;
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"RMStory" inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];
    NSError *error;
    self.stories = [managedObjectContext executeFetchRequest:fetchRequest error:&error];

}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [stories count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    if (cell == nil) {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    RMStory *thisStory = [stories objectAtIndex:indexPath.row];
    cell.textLabel.text = thisStory.title;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", thisStory.author];

    return cell;
}

Core Data コマンドに関係している可能性がありますが、スタックに記載されている他のソリューションを試してこのエラーを回避しましたが、これまでのところ何も機能しません。:-/

また、ストーリーボードを別のアプリからインポートしたので、それが問題を引き起こしている可能性があります。

4

2 に答える 2

2

私はそれを考え出した。デバッガ出力の冒頭でエラーが発生しました

Unknown class IntroViewController in Interface Builder file.

StackExchange でエラーを調べたところ、ここで答えが見つかりました。使用した答えを提供したのはMatthewでした。コンパイル ソースのリストに IntroViewController を追加する必要がありました。それが何を意味するのか、またはテーブル ビューがない場合にプログラムの実行が妨げられなかった理由はわかりませんが、現在は機能しています。ありがとうStackExchange!!

于 2012-10-12T07:09:17.500 に答える
1

IB では、UIViewController クラスを に設定することを忘れないでくださいIntroViewController

于 2012-10-12T01:13:55.317 に答える