IOS (this class is not a key code compatible for a key dataSource)

I am creating an application for the iPhone and I am working on this TableViewController, but when testing, I get this error, and I really don't know what to do with it:

2012-01-13 13:45:32.947 HandHistory Reviews[3422:707] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<SessionsTableViewController 0x191cb0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key dataSource.' 

Anyone got an idea?

This is my SessionTableViewController.m file:

 #import "SessionsTableViewController.h" #import "Session.h" @interface SessionsTableViewController() @property (nonatomic, copy) NSArray *sessions; @end @implementation SessionsTableViewController @synthesize sessions = _sessions; #pragma mark - View lifecycle - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; NSMutableArray *sessions = [[NSMutableArray alloc] init]; // Looking for files // Finding the Documents directory NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [paths objectAtIndex:0]; NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil]; // Looping through each file in the directory for (NSString *file in directoryContent) { NSString *contents = [NSString stringWithContentsOfFile:[[paths objectAtIndex:0] stringByAppendingPathComponent:file] encoding:NSUTF8StringEncoding error:nil]; Session *session = [[Session alloc] initWithName:file andContents:contents]; [sessions addObject:session]; } self.sessions = sessions; } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.sessions count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Session Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } //cell.textLabel.text = [[self.sessions objectAtIndex:indexPath.row] name]; //cell.detailTextLabel.text = [[NSString alloc] initWithFormat:@"%d hands", 10]; return cell; } #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. /* <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; // ... // Pass the selected object to the new view controller. [self.navigationController pushViewController:detailViewController animated:YES]; */ } @end 
+8
ios uitableview key-value
source share
2 answers

It looks like you have improperly connected the device to the interface. It seems you have attached something to the output called dataSource in your SessionsTableViewController . It looks like you probably wanted to do it the other way around, as I assume you have a table view in SessionsTableViewController .

So, you need to attach the dataSource property of your table view to your SessionsTableViewController instance (possibly the β€œfile owner” in your case), and not vice versa.

+16
source share

Make sure that you did not specify the wrong application in the field labeled "Module" (only under the class). This is located in the identity inspector in UI Builder.

Usually, you should not specify anything as a module, since by default it is grayed out with the inscription "current ....", which means its availability in all applications. But, if you specified the application here, the user interface element will not be available for any other applications in your project, giving you an error message when you try to start other applications.

That was my problem ...

0
source share

All Articles