我有一个UIViewController,里面有一个UITableView。 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命令有关,但我一直在尝试堆栈中提到的其他解决方案来克服这个错误,到目前为止没有任何作用。 : - /
另外,我从另一个应用程序导入了故事板,所以也许这可能会造成一些麻烦。
答案 0 :(得分:2)
我明白了。我在调试器输出的最开始出现错误
Unknown class IntroViewController in Interface Builder file.
我查看了StackExchange上的错误并找到了答案here它是Matthew给出了我使用的答案。我不得不将IntroViewController添加到编译源列表中。我不确定这意味着什么,或者为什么它没有阻止程序在没有表视图的情况下运行,但现在它可以工作了。谢谢StackExchange !!
答案 1 :(得分:1)
在IB中,不要忘记将UIViewController类设置为IntroViewController
。